728x90

백준 243

백준 2668 <숫자고르기> Python

https://www.acmicpc.net/problem/2668 2668번: 숫자고르기 세로 두 줄, 가로로 N개의 칸으로 이루어진 표가 있다. 첫째 줄의 각 칸에는 정수 1, 2, …, N이 차례대로 들어 있고 둘째 줄의 각 칸에는 1이상 N이하인 정수가 들어 있다. 첫째 줄에서 숫자를 적절 www.acmicpc.net 기본 아이디어는 '무작위로 뽑아서 계산하지 말고 테이블 둘째 줄에 적혀있는 수로 이동하면 적어도 하나의 수는 첫째줄 집합에 포함된다' 입니다. 이런 아이디어를 갖고 어떻게 구현할지 생각해보니 단순히 DFS, 즉 스택을 이용하면 될 것 같다는 생각이 들었습니다. def solution(N, table): # 스택 리스트 stack_list = [] # 자신의 값을 가지면 미리 넣어두기 ..

백준 1655 <가운데를 말해요> Python

https://www.acmicpc.net/problem/1655 1655번: 가운데를 말해요 첫째 줄에는 백준이가 외치는 정수의 개수 N이 주어진다. N은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수이다. 그 다음 N줄에 걸쳐서 백준이가 외치는 정수가 차례대로 주어진다. 정수는 -1 www.acmicpc.net 수가 들어올 때 마다 정렬이 되어야 한다 그러므로 정렬에 많은 시간이 소요되면 안된다 다른 순서는 필요없고 중간만 맞으면 된다 라는 특성이 문제를 푸는데 가장 중요한 포인트였습니다. 우선 힙(우선순위큐)를 사용했는데, 이유는 다음과 같습니다. 수가 들어올 때 마다 정렬이 되어야 한다 -> 힙 삽입으로 해결 정렬에 많은 시간이 소요되면 안된다 -> 힙 정렬로 해결 다른 순서는 필요없..

백준 2659 <십자카드 문제> Python

https://www.acmicpc.net/problem/2659 2659번: 십자카드 문제 입력은 한 줄로 이루어지며, 이 한 줄은 카드의 네 모서리에 씌여있는 1 이상 9 이하의 숫자 4개가 시계 방향으로 입력된다. 각 숫자 사이에는 빈칸이 하나 있다. www.acmicpc.net 따로 핵심 아이디어는 없었고 구현만 하면 풀 수 있는 문제였습니다. 다만 몇 번째인지 구할 때 십자수가 아닌 수를 주의하면 쉽게 풀 수 있습니다. def solution(card): clock_num = find_min(card) return count_min(clock_num) # 시계수 찾기 def find_min(card): min_card = int(card) # 카드 돌리면서 최솟값 찾기 for _ in range..

728x90