Baekjoon

개발공부/algorithm

[백준][python] 1946 신입사원 - Greedy

백준 1946: 신입사원 Silver I 문제링크 1946번: 신입 사원 첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성 www.acmicpc.net 나의 접근 입력받는 서류 순위 점수, 면접 점수에 대해서 서류 순위 점수를 기준으로 오름차순으로 정렬한다. 정렬된 점수 배열에 대해서 탐색을 진행한다. 서류 순위 점수가 높은 -> 낮은 순서대로 탐색을 진행하며 면접 순위에 대해서도 최솟값을 비교해준다. 면접자의 면접 순위가 그 전에 저장된 가장 높은 순위보다 더 높을 시, minrecord를 재설정해주고 count를 늘려준다. import ..

개발공부/algorithm

[백준][python]10844.쉬운계단수 - DP

백준 10844 쉬운 계단 수 Silver I 문제링크 10844번: 쉬운 계단 수 첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 나의 접근 DFS 로직으로 가장 뒷자리의 숫자에 +1, -1 한 경우에 대해 깊이우선 탐색을 진행해주고 N의 길이까지 탐색을 완료하면 count를 더 해주는 식으로 구현해봤는데.. 시간초과가 났다. 아래는 해당 코드다. import sys def dfs(startnum, idx): global count change = [1, -1] if idx == N - 1: count += 1 return count for calc in range(2): newnum = startnum + change[calc] #2 if 0

개발공부/algorithm

[백준][python] 9658.돌게임4 - DP

백준 9658 돌게임4 Silver I 문제링크 9658번: 돌 게임 4 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net 나의 접근 N이 1, 2, 3, 4인 경우를 살펴보았을 때 아래와 같은 패턴이 나타난다: 돌 1개: 상근, 창영 -> 상근 승 돌 2개: 상근, 창영, 상근 -> 창영 승 돌 3개: 상근, 창영, 상근, 창영 -> 상근 승 돌 4개: 상근, 창영, 상근, 창영, 상근 -> 창영 승 N이 5개인 경우부터는 상근이는 돌 1개, 3개, 4개를 고를 수 있다. 위의 패턴을 토대로 각각의 경우에 대한 승패를 살펴보자면: 돌 1개 (남은 돌 네개) -> 창영 승 돌 3개 (남은 돌 2개) -> 창영 승 돌 4개 (남은 돌 1개) -> 상근 승..