목록백준 (39)
코테 탈출일지
https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 접근 방식 - 함수 선정 (bfs, dfs) - 그래프 특정 좌표 방문 처리 방식 고민 - 적절한 count 시점 고민 코드 풀이 from collections import deque t = int(input()) # 몇 번의 테스트케이스인지 dx = [0, 0, -1, 1] dy = [-1, 1, 0, 0] def bfs(graph, x, y): # bfs 함수 구현 q = deque() q.append([..
https://www.acmicpc.net/problem/1193 1193번: 분수찾기 첫째 줄에 X(1 ≤ X ≤ 10,000,000)가 주어진다. www.acmicpc.net 접근 방식 - 경우의 수를 어떻게 나눌지 고민 코드 풀이 n = int(input()) base = 1 while n - base >= 0: # 음수가 나오지 않을 때까지 n -= base # 1, 2, 3 ... 순서대로 빼주며 몇번째 분수인지 base += 1 # 몇번째 줄에 있는지 확인 if base % 2 == 1: # 위 -> 아래 방향 탐색 if n == 0: # 딱 맞게 끝나는 경우는 따로 고려 print('{}/{}'.format(base-1, 1)) else: print('{}/{}'.format(base-n+1..
https://www.acmicpc.net/problem/2606 2606번: 바이러스 첫째 줄에는 컴퓨터의 수가 주어진다. 컴퓨터의 수는 100 이하인 양의 정수이고 각 컴퓨터에는 1번 부터 차례대로 번호가 매겨진다. 둘째 줄에는 네트워크 상에서 직접 연결되어 있는 컴퓨터 쌍 www.acmicpc.net 접근 방식 - 그래프 탐색 방식 고민 코드 풀이 n = int(input()) # 컴퓨터의 수 k = int(input()) # 컴퓨터 연결 수 graph = [[0]*(n+1) for _ in range(n+1)] # 컴퓨터 연결관계 그래프 visited = [0]*(n+1) # 연결된 컴퓨터 체크 여부 확인용 리스트 for _ in range(k): a, b = map(int, input().spl..
https://www.acmicpc.net/problem/1475 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net 접근 방식 - 전체 숫자를 count할 방법 고민 - 6, 9를 따로 처리할 방법 고민 코드 풀이 import math n = int(input()) cnt = [0] * 10 # 0, 1, 2, ... 9 의 갯수를 count하여 저장 for num in str(n): cnt[int(num)] = cnt[int(num)] + 1 tmp = math.ceil((cnt[6]+cnt[9])/2) # (6갯수 + 9갯수)/2 를 올림한 값 ex. 2.5 -> 3 del cnt[6] # 6의 갯수 리스..
https://www.acmicpc.net/problem/1260 1260번: DFS와 BFS 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사 www.acmicpc.net 접근 방식 - 그래프 접근법 고민하기 (dfs: 재귀함수 활용, bfs: 큐 활용) - 그래프 표현법, 방문 처리 방식 고민 코드 풀이 from collections import deque n, m, v = map(int, input().split()) graph = [[0]*(n+1) for _ in range(n+1)] visited1 = [0]*(n+1)..
https://www.acmicpc.net/problem/1158 접근 방식 - 원형 구조에 대한 고민 필요 코드 풀이 from collections import deque n, k = map(int, input().split()) ppl = deque(range(1, n+1)) # 1번부터 N명의 사람 인덱스가 들어있는 데크 q = [] # 제거되는 순서대로 리스트 삽입 예정 num = 0 # 몇 번째 사람을 확인하고 있는가 for _ in range(n): num += (k-1) # 뒤에서 remove 되므로 간격은 k-1만큼 벌림 if num >= len(ppl): # 원형 자리에서 다시 원점으로 돌아온 경우 num = num % len(ppl) # 현재 명수로 나눈 나머지 활용 q.append(p..
https://www.acmicpc.net/problem/10828 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 접근 방식 - 효율적인 접근 방식 - 데크로 스택 구현하 코드 풀이 from collections import deque import sys n = int(input()) # 명령의 갯수 stack = deque() for _ in range(n): order = list(sys.stdin.readline().split()) # ex order = ['push', '2'], ['..
https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 접근 방식 - 효율적인 탐색법 고민 코드 풀이 n = int(input()) max_5 = n // 5 # 5kg 봉지의 최대 갯수 flag = 0 # 나누어떨어지는지 확인하기 위한 장치 for num_5 in range(max_5, -1, -1): # 역순, max_5 = 3라면 3, 2, 1, 0 순서로 호출 if (n - (num_5 * 5)) % 3 == 0: # 나머지 무게를 3kg 봉지로 만들 수..