[백준 2869번] 달팽이는 올라가고 싶다
·
📚 스터디/알고리즘
2869번: 달팽이는 올라가고 싶다첫째 줄에 세 정수 A, B, V가 공백으로 구분되어서 주어진다. (1 ≤ B < A ≤ V ≤ 1,000,000,000)www.acmicpc.net문제 상황달팽이가 지면에서 V m 인 나무막대를 낮에는 A m 만큼 이동하고, 밤에는 B m 만큼 뒤로 미끌어진다. 단, 정상에 도달하면 미끌어지지 않는다. 이때, 달팽이가 V m 나무막대 정상에 도달하려면 며칠이 걸리는지 구하는 문제이다. 즉, 낮에 A m를 이동하고 밤에는 정상에 도달하지 않는다면, B m 를 뒤로 미끄러지고 정상에 도달하면 미끄러지지 않는 달팽이는 정상에 도달하기 위해선 며칠이 걸릴까?솔루션달팽이는 하루에 (A - B)m 만큼 이동한다. 정상에 도달하면 밤에는 0m 미끄러지고, 도달하지 않는다면, B m..
[백준 2609번] 최대공약수와 최소공배수
·
📚 스터디/알고리즘
2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 문제 상황 주어지는 두 자연수에 대해 최대공약수와 최소공배수를 순서대로 구해야하는 문제이다. 솔루션 1. 최대공약수 2. 최소공배수 하나씩 구해내는 솔루션을 택했다. 1. 최대공약수 솔루션 주어진 두 자연수의 약수를 각각 모두 구했다. 약수 중 공통되는 것을 찾아 공약수 리스트를 구하고, 공약수 리스트의 최댓값을 최대공약수로 출력했다. 2. 최소공배수 솔루션 주어진 두 자연수 중 하나를 숫자 1부터 배수로 곱하며, 나머지 다른 자연수와 나누어 떨어지면, "주어진 자연수 중 하나 X 배수" 를 최소공배수로 출력했다. 즉, 최대 공..
[백준 1259번] 팰린드롬수
·
📚 스터디/알고리즘
1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. www.acmicpc.net 문제 상황 121, 12421, 010, 202 와 같은 수를 팰린드롬수라고 한다. 즉, 팰린드롬수는 어떠한 수를 거꾸로 읽어도 똑같다면 팰린드롬수이다. 입력으론, 1~99999 범위의 정수가 주어지며 팰린드롬수인지를 판별해내야하는 문제이다. 솔루션 str() 함수는 정수를 문자열로 바꿔주는 함수이다. 문자열은 "배열"로 정의되어 한개의 문자마다 고유한 인덱스가 순서대로 정의된다. 이번 문제에선 주어진 수를 거꾸로 뒤집어 기존 주어진 수와 일치하는 지 비교해야 되었다. 따라서,..
[백준 15829번] Hashing
·
📚 스터디/알고리즘
15829번: Hashing APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정 www.acmicpc.net 문제상황 해시란, 임의의 길이를 가진 데이터를 입력받아 고정된 길이인 해시 값을 출력하는 함수이다. 주로, 데이터 암호화에서 해시를 사용한다. 그럼, 해시 값을 만들기 위해, 특정한 해시 함수가 존재한다. (임의의 값에 대해 중복된 해시 값을 지니고 있을 때, 해시 충돌이 있다고 말한다.) 해당 상황에선, 임의의 입력 데이터를 "소문자 알파벳 문자열"로 한정했고, 그에 따른 해시 함수 (hash function)을 제공했다. 입력으론, 문자열의 길이와 문자열이 ..
[백준 2798번] 블랙잭
·
📚 스터디/알고리즘
2798번: 블랙잭첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장www.acmicpc.net문제 상황N장의 카드에 써져 있는 숫자가 주어졌을 때, M을 넘지 않으면서 M에 최대한 가까운 카드 3장의 합을 구해 출력하시오 즉, 임의로 주어진 N장의 숫자 카드 중 3장을 골라 블랙잭 점수인 M을 넘지않는 선에서 가장 근접하게 (게임 승리조건으로) 3장을 선택한 점수를 출력하는 문제이다.솔루션주어진 카드 N장에 대해서 카드 3장을 뽑는 모든 경우를 살펴보고 블랙잭 점수 M을 넘지 않는 최대 점수를 가려내었다. 즉, N C 3의 경..
[백준 2331번] 분해합
·
📚 스터디/알고리즘
2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 문제 상황 자연수 245의 분해합은 256(=245+2+4+5)이 된다. 자연수 256의 생성자는 245이다. 자연수 N이 주어졌을 때 N의 가장 작은 생성자를 구해내는 프로그램을 만들어보자. 즉, 자연수 N에 대해서 생성자를 만족하는 수를 구하는 것이 이번 문제의 핵심이다. 솔루션 생성자가 분해합을 하는 절차를 보고 주어진 자연수 N에 대한 생성자를 구해내는 솔루션을 적용했다. (분해합 = 245 + 2 + 4 + 5) 따라서, 자..
[백준 1018번] 체스판 다시 칠하기 (파이썬)
·
📚 스터디/알고리즘
1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 문제 요구사항 N X M 크기의 보드 판이 주어진다. (단, N & M >= 8) 8 X 8 크기로 임의로 잘라내서, 체스판으로 만들 것이다. 이때, 체스판 규격에 맞도록 다시 그리기 (덧칠) 을 수행하고, 최소 갯수로 다시 그릴 수 있는 경우를 구하여라. # 체스판 규격 체스판은 맨 왼쪽 위 칸이 White (흰색) 으로 시작 Black (검은색) 으로 시작 두가지의 경우가 있다. 해결 솔루션 입력받은 N X M 크기의 보드판을 8 X 8 크기로 임의의..
[백준 2775번] 부녀회장이 될테야 (파이썬)
·
📚 스터디/알고리즘
2775번: 부녀회장이 될테야 첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 정수 k, 두 번째 줄에 정수 n이 주어진다 www.acmicpc.net 이번 문제는 자료구조의 배열을 활용해 해결할 수 있는 문제이다. # 문제 해결 입력인 k층, n호의 인원 수는 관찰을 기반으로 연산 방법을 구조화시켰다. 코드로 작성은 배열의 2차원 배열을 활용해 row가 k, col은 n인 2차원 배열은 선언했다. (0, 0) (1, 0) (2, 0) - - - 공간에는 "1"을 채웠다. (0, 0) (0, 1) (0, 2) - - - 공간에는 호실 숫자만큼 채웠다. 정리하면, 문제 & 조건에 따라 확정된 정보를 정리하였다. k층의 n호의 인원은 k-1층의 1호 ~ ..