본문 바로가기

전체 글84

[Python] 백준 6068 - 시간 관리하기 https://www.acmicpc.net/problem/6068 6068번: 시간 관리하기 성실한 농부 존은 시간을 효율적으로 관리해야 한다는 걸 깨달았다. 그는 N개의 해야할 일에 (1=0: suc_all = True for i in range(works): if start + task[i][0] > task[i][1]: t -= 1 start = t suc_all = False break; start += task[i][0] # t일 때 모든 순회를 통과하면? # 그게 정답 if suc_all: print(t) break if t task[k][1]: task[i], task[k] = task[k], task[i] elif task[i][1] == task[k][1]: if task[i][0] > .. 2022. 5. 20.
[Python] 백준 1789 - 수들의 합 https://www.acmicpc.net/problem/1789 1789번: 수들의 합 첫째 줄에 자연수 S(1 ≤ S ≤ 4,294,967,295)가 주어진다. www.acmicpc.net 해결방법 val = 1에서 N을 계속 'N - val(N 빼기 val)' 해주며 N이 val보다 작아거나 같아지지 않게 만들면 된다. 코드 N = int(input()) - 1 val = 1 while val 2022. 5. 20.
[Python] 백준 2805 - 나무 자르기 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 문제 이해 먼저 문제 이해를 하겠다. 처음에 문제를 읽으면서 무슨 말인가 했다. 절단기가 위에서 아래로 이동하는 건 줄 알았는데, 문제를 다시 읽어보니 아래 그림처럼 가로로 이동을 하는 것이었다! 문제가 요구하는 바는 위 그림처럼 나무를 잘랐을 때, 자르고 남아버린 나무조각(?)들의 높이의 합이 M보다 크거나 같음을 만족하는 H의 최솟값을 구하라는 것이다. .. 2022. 5. 19.
[Python] 백준 1002 - 터렛 https://www.acmicpc.net/problem/1002 1002번: 터렛 각 테스트 케이스마다 류재명이 있을 수 있는 위치의 수를 출력한다. 만약 류재명이 있을 수 있는 위치의 개수가 무한대일 경우에는 -1을 출력한다. www.acmicpc.net 해결방법 원의 개념을 알아야 풀 수 있는 문제이다. 원의 교점의 개수를 구하는 문제이다. 두 원이 겹치는 상황을 그림을 그려 이 문제를 풀었다. 풀이 d : 두 원점 사이의 거리 코드 for _ in range(int(input())): # 테스트케이스 입력 및 반복 # 입력 x1,y1,r1, x2,y2,r2 = map(int,input().split()) # 두 원 사이의 거리 : d d = ((x1-x2)**2 + (y1-y2)**2)**0.5 .. 2022. 5. 15.
[Python] 백준 23885 - 비숍 투어 문제 보러 가기 https://www.acmicpc.net/problem/23885 23885번: 비숍 투어 나이트 투어는 체스판에서 나이트가 모든 칸을 정확히 한 번씩 방문하는 경로를 찾는 문제이다. 체스 마스터 희자는 또 다른 마이너 피스인 비숍도 체스판을 자유롭게 여행할 수 있는지 궁금 www.acmicpc.net 해결방법 종이에 5*5 판을 그리고 규칙을 찾았다. 시작점이 (홀수, 짝수) 또는 (짝수, 홀수)인 경우는 아무리 이동해도 (짝수,짝수)나 (홀수,홀수)로 도착할 수 없다. 즉, (홀,짝) 또는 (짝,홀)이면 무조건 (홀,짝) 또는 (짝,홀)칸으로 도착한다. 반대로 (짝수, 짝수) 또는 (홀수, 홀수)인 경우는 (홀,홀) 또는 (짝,짝)칸으로만 도착할 수 있다. 위 특징으로 (x, y)라.. 2022. 5. 11.
[Python] 백준 6588 - 골드바흐의 추측 문제 보러 가기 https://www.acmicpc.net/problem/6588 해결방법 '에라토스테네스의 체'를 이용해서 풀었다. boolean 값을 담고 있는 sosu라는 리스트를 만들어서 2~len(sosu) 까지의 범위를 다 찾아보며 i번째 인덱스가 소수(True)일때를 두고 풀었다. # 소수 판정 sosu = [True] * 1000001 m = int(1000001**0.5) for i in range(2,m+1): if sosu[i]: for k in range(i+i,1000001,i): sosu[k] = False while True: n = int(input()) if n==0: break else: for i in range(2,m+3): if sosu[i] and sosu[n-i].. 2022. 5. 11.
[Python] 백준 5747 - Odd or Even https://www.acmicpc.net/problem/5747 문제 '홀짝' 게임에는 여러가지 방식이 존재한다. 그중 한가지 방법은 두 사람이 각자 '홀수', '짝수' 중 하나를 말한다. 그러고서 셋을 센다('셋, 둘, 하나!'). '하나!'에서 두 사람은 한 손으로 0부터 5까지의 수를 손가락의 개수로 표현한다. 만약 두 사람이 내민 손가락의 수를 세었을 때 합이 짝수라면 처음 짝수를 외친 사람이 승리하고, 반대로 홀수라면 처음 홀수를 외친 사람이 승리한다. 존과 매리는 이 홀짝 게임을 몇 판하려고 한다. 홀수를 좋아하는 존은 모든 판에서 홀수를 고르기로 했고, 매리는 짝수를 고르기로 했다. 존과 매리는 각 경기의 카드를 보면서 나중에 결과를 다시 확인하기 위해 게임을 하는 동안 각자의 카드에 자신.. 2022. 5. 8.
[Python] 백준 1439 - 뒤집기 https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 해결방법 제가 풀이한 해결 방법은 두 가지가 있습니다. 하나는 문자열을 전부 읽어 들이는 방법, 다른 하나는 split 함수를 이용하는 방법이 있습니다. 방법 1. import math string = input() L = len(string) cnt = 0 for i in range(L-1): if string[i] != string[i+1]: cnt += 1 cnt /= 2 print(math.. 2022. 5. 7.