본문 바로가기

백준17

백준 실버1 1931. 회의실 배정 (python) 회의실 풀이 문제를 보고 어떻게 할까 구상하다가 처음에는 사용하고 있는 모든 시간을 기록하는 리스트 변수를 생성할까 하다가 굳이 그럴 필요는 없다고 생각되었다. 이유는 현재 회의의 종료 시간이 다음 회의의 시작 시간보다 늦으면 다음 회의는 할 수 없고, 현재 회의의 종료 시간이 다음 회의의 시작시간보다 일찍이면 다음 회의를 시작할 수 있기 때문이다. 이를 이용하는 것을 재귀함수를 이용해서 진행하기 위해 아래처럼 진행을 해봤다. 하지만 시간 초과가 발생했다. # 한 개의 회의실. 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 갯수. import sys def check_maxuse(nums, use_time, i): global max_use if max_use < nums: max_.. 2024. 3. 2.
백준 실버4 11399. ATM (python) ATM 풀이 문제를 찬찬히 읽으면 금방 해결되는 문제이다. 처음에는 섞든 다 똑같은 것 아닌가 생각했는데 그게 아니라 5 사람이 있으면 1번째 사람이 걸린 시간 2번째 사람이 걸린 시간 3번째 사람이 걸린 시간 4번째 사람이 걸린 시간 5번째 사람이 걸린 시간 의 합이 최소화가 되는 것을 구하는 것이다. 따라서 이것은 오름차순으로 정렬시킨 다음에 슬라이싱을 적용하든 뭘 하든 sum(list [:나+1])들의 합이라고 생각하면 된다. 나는 슬라이싱은 시간이 더 걸릴 것이라 생각했기에 시간을 누적시키는 방법을 사용했다. 따라서 코드는 다음과 같다. import sys N = int(sys.stdin.readline().strip()) p_list = list(map(int, sys.stdin.readline.. 2024. 3. 2.
백준 실버4 1764. 듣보잡 (python) 듣보잡 풀이 문제를 보고 바로 작성해서 아래처럼 풀었다. 듣지 못해본 사람 보지 못해본 사람 의 명단을 받아서 중복되는 사람인 듣도보도못한사람을 사전순으로 출력하는 것이다. 따라서 각 입력받고 순서대로 중복되는지 확인하는 방법을 사용했다. 그러나 시간 초과가 발생했다. import sys N, M = map(int, sys.stdin.readline().split()) unknown_heard = [] unknown_look = [] for _ in range(N): unknown_heard.append(sys.stdin.readline().strip()) for _ in range(M): unknown_look.append(sys.stdin.readline().strip()) unknown_look_h.. 2024. 3. 2.
백준 실버2 1012. 유기농 배추 (python) 유기농 배추 풀이 dfs 문제를 풀기 위해 백준에서 dfs 카테고리로 문제를 찾았고 유기농 배추를 맞이했다. 보통 N,M의 방식으로 줄텐데 여긴 왜 M, N으로 주는지 모르겠지만, 잘 받고 코드에 입력했다. 해당 문제는 bfs또는 dfs로 풀 수 있는데 우선 dfs로 먼저 풀어봤고 아래처럼 풀었다. 입력값 받기 1. board와 visited 생성 및 몇 개의 군락이 있는지 확인할 count 변수 생성 2. 위치를 순회하면서, 배추가 있고, 해당 배추를 확인하지도 않았다면, dfs를 진행! 3. dfs 함수 내에서 stack을 생성하고, 이 stack을 이용해서 진행 -> stack에 값이 존재하는 동안 해당 위치에서 4방향을 확인하고, 해당 위치에 배추가 있고, 확인 안 했으면, 계속해서 진행하는 방식.. 2024. 3. 1.
백준 실버2 18111. 마인크래프트 (python) 마인크래프트 인벤토리에 블록이 하나 있기 때문에, 맨 오른쪽 아래에 블록을 하나 채우면 된다. 풀이 처음 푼 풀이는 아래와 같은 풀이로 3중 for문이였다. 시간초과가 났다... pypy3로 하니 통과는 하는데... 흐음... import sys N, M, B = map(int, sys.stdin.readline().split()) board = [list(map(int, sys.stdin.readline().split())) for _ in range(N)] min_value = sys.maxsize index = 0 # 땅의 높이는 256보다 작거나 같은 자연수 또는 0이므로 0부터 순회 # 이 땅 높이로 만드려는 거임 for height in range(257): # 초과, 부족 블록 갯수 exce.. 2024. 2. 29.
백준 실버3 1003. 피보나치 함수 (python) 피보나치 함수 풀이 처음엔 문제에서 보이는 소스코드르 이용해서 python화 하고, 바로 그곳에 0이 출력된 개수와 1이 출력된 개수를 저장하는 변수를 이용해서 풀이했다. def fibonacci(n): global number0 global number1 if n == 0: number0 += 1 return 0 elif n == 1: number1 += 1 return 1 else: return fibonacci(n-1) + fibonacci(n-2) T = int(input()) for testcase in range(T): # 0이 출력되는 횟수와 1이 출력되는 횟수 N = int(input()) number0 = 0 number1 = 0 fibonacci(N) print(number0, numb.. 2024. 2. 24.