본문 바로가기

코딩 테스트30

백준 2468번 : 안전영역 (Python) 출처 : https://www.acmicpc.net/problem/2468 def search_safe(n, area, rain) : # 찾아낸 안전영역 그룹의 수 cnt = 0 # 영역을 탐색했는지 체크하는 배열 (탐색 했음 = 0, 아직 안했음 = 1) area_searched = [[1] * n for i in range(n)] for i in range(n) : for j in range(n) : # 아직 탐색하지 않은 안전영역 찾으면 탐색 시작 if area[i][j] > rain and area_searched[i][j] == 1 : cnt += 1 # 안전영역인지 탐색할 후보 영역의 좌표 목록 to_search = [[i, j]] # 후보 목록에 값이 남아있으면 탐색 계속 while to_s.. 2022. 12. 12.
백준 1083번 : 소트 (Python) 출처 : https://www.acmicpc.net/problem/1083 n = int(input()) nums = list(map(int, input().split())) s = int(input()) # 배열 완료된 숫자 개수 done = 0 # 이상적 배열 ideal = sorted(nums, reverse=True) while s > 0 : if nums == ideal : break range_max = max(nums[done : min(n, done+s+1)]) # print("배열 완료된 숫자 개수", done) # print("현 범위", nums[done : min(n, done+s+1)]) # print("현 범위 최대", range_max) idx = nums[done:].inde.. 2022. 12. 7.
백준 1181번 : 단어 정렬 (Python) 출처 : https://www.acmicpc.net/problem/1181 n = int(input()) words = set() for i in range(n) : words.add(input()) words = sorted(words) words = sorted(words, key = len) print(*words, sep="\n") 중복된 단어는 출력하지 않으므로 집합에 단어를 추가한다. 처음 정렬로 단어들이 알파벳 순으로 정렬되고, 두번째 정렬로 길이 순으로 정렬된다. 길이 순 정렬을 나중에 했기 때문에 길이가 같은 단어의 경우에는 알파벳 순서가 앞서는 단어가 먼저온다. 2022. 12. 5.
백준 11729번 : 하노이의 탑 이동 순서 (Python) 출처 : https://www.acmicpc.net/problem/11729 def hanoi(n, start, end) : if n == 1 : print(start, end) else : hanoi(n-1, start, 6 - start - end) print(start, end) hanoi(n-1, 6 - start - end, end) n = int(input()) print(2**n - 1) hanoi(n, 1, 3) n은 전체 원판의 수, start는 옮길 원판이 꽂혀있는 막대의 번호, end는 원판을 옮길 막대의 번호이다. 총 n개의 원판이 있을 때, 전체 과정은 크게 3단계로 구성된다. 1. n-1 개의 원판을 start도 end도 아닌 제 3의 막대(이 막대의 번호는 6 - start -.. 2022. 12. 4.