본문 바로가기

BOJ/Python

(192)
[BOJ/백준] 31282 - ЛОВНО КУЧЕ (Python) 문제문제링크사냥개가 토끼보다 n 걸음 뒤에 있고 토끼는 점프 한 번에 m 걸음, 사냥개는 k 걸음 이동한다고 할때.사냥개가  토끼를 따라잡기 위한 점프의 수를 구하라. 풀이한 번 점프를 할 때 둘 사이 줄어든 걸음 수는 k-m 걸음이다.사냥개가 토끼를 따라잡기 위해서는 동시에 같은 지점에 도착하거나 앞질러야 하므로 둘 사이 거리를 점프당 줄어든 걸음 수로 나누고 올림을 해서 구하면 된다. 코드import mathn,m,k=map(int, input().split())print(math.ceil(n/(k-m)))
[BOJ/백준] 29823 - Pakirobot Manhattanis (Python) 문제문제링크로봇이 이동한 걸음수와 이동 방향이 주어질 떄,원래 있던 지점으로 돌아오기 위해 필요한 최소 걸음 수를 구하라. 풀이이 문제를 좌표로 생각하면 간단하다.현재 위치를 (0,0)이라 하고, 북과 남쪽은 y좌표의 이동으로, 동과 서쪽은 x 좌표의 이동으로 생각하자.각 문자별로 좌표를 이동시키고 난 후, 마지막 좌표가 현재 위치가 된다.이 위치에서 (0,0)까지의 거리를 구해야 하는데, 이 로봇은 x축 또는 y축 이동만 가능하므로 x좌표와 y좌표의 절댓값을 각각 구해 더하면 최소 걸음 수가 나온다. 코드def move(n, s): x,y=0,0 for i in range(n): if s[i]=='N': y+=1 elif s[i]=='S': ..
[BOJ/백준] 30658 - Os últimos serão os primeiros (Python) 문제문제링크n개의 팀의 등수는 다음 경기에서 뒤집힌다([1, 3, 2] -> [2, 3, 1]). 입력이 끝나면 0이 입력된다.다음 경기의 예상 등수를 출력하고 테스트케이스가 끝나면 0을 출력한다. 풀이n개의 팀이 있다고 할 때 n이 0이 아닌 경우, while문으로 계속 아래의 작업을 반복한다.등수를 리스트 형태로 입력받고 reverse()로 뒤집는다.뒤집은 결과를 한 줄에 하나씩 출력하고 0을 출력한 후, 다음 n을 입력받는다. 코드n=int(input())while n!=0: levs=[int(input()) for _ in range(n)] levs.reverse() print(*levs, sep='\n') print(0) n=int(input())
[BOJ/백준] 31280 - ФАКИP (Python) 문제문제링크4가지 색상의 쥐가 모자에 각각 a, b, c, d마리씩 들어있을때,각 색상의 쥐가 하나씩 포함되려면 최소 몇 마리의 쥐를 꺼내야 하는가. 풀이가장 좋은 경우는 각각 색상의 쥐를 한 마리씩, 총 4마리의 쥐를 꺼내는 것이다.하지만 이 문제에서는 최악의 경우를 구해야 하기 때문에, 가장 적은 수의 쥐를 한 마리 꺼내고 나머지 쥐 모두를 꺼내야 ㅎ나다.따라서 쥐의 수를 리스트로 입력받고 정렬한 뒤, 가장 작은 값 빼고 전부 합한 뒤 1을 더하면 된다. 코드mouse=list(map(int,input().split()))mouse.sort()print(sum(mouse[1:])+1)
[BOJ/백준] 30319 - Advance to Taoyuan Regional (Python) 문제문제링크2023년 ICPC Taoyuan 대회 개최 시작일인 2023년 10월 21일보다 예선 TOPC 날짜는 최소 35일 이전이어야 한다.입력된 예비 TOPC 날짜가 적절한지 판단하라. 풀이날짜는 'YYYY-MM-DD' 형태로 입력받으므로 split('-')로 나눈 후 int 타입으로 리스트에 저장한다.이 날짜가 2023년 10월 21일보다 최소 35일 이전이므로 가능한 가장 늦은 날짜는 2023년 9월 16일이다.만약 입력받은 날짜가 2023년 9월이라면, day(YMD[])는 16보다 작아야 한다.이외에 입력은 2023년에 한해서 이루어지므로 1월부터 8월까지는 모든 날짜가 다 가능하다. 코드YMD=list(map(int,input().split('-')))result='TOO LATE'if (..
[BOJ/백준] 24313 - 알고리즘 수업 - 점근적 표기 1 (Python) 문제 링크주어진 함수들에 대해 빅-O을 만족하는지 확인하는 문제이다. 두 함수의 차수는 같으므로, a1이 c보다 작거나 같고 n0인 지점부터 g(n)이 f(n)이 같거나 작으면 된다. a1, a0=map(int, input().split())c=int(input())n0=int(input())if c>=a1 and n0*c>=a1*n0+a0: print(1)else: print(0)
[BOJ/백준] 2903 - 중앙 이동 알고리즘 (Python) 문제 링크정사각형의 각 변과 중심에 점을 하나 추가하는 과정을 n번 거칠 때, 마지막 단계의 점의 개수를 구하는 문제이다. 추가된 모든 점들의 개수를 구하는 것이 아니라 넓이를 구하는 형식으로 생각하면 문제가 쉽다.점이 추가되는 것이 아니라 길이가 늘어난다고 생각하자.과정 한 번을 거칠 때마다 모서리가 있는 변은 '현재 점의 개수-1'의 길이가 증가한다.이렇게 for문으로 계산한 변의 길이의 제곱을 출력하면 된다. n=int(input())x=2for _ in range(n): x+=(x-1)print(x**2)
[BOJ/백준] 2563 - 색종이 (Python) 문제 링크세 개의 색종이를 일부 부분 겹쳐서 놓을 때 덮인 전체 넓이를 구하는 문제이다. 크기가 100*100인 리스트를 만들고 각 색종이의 왼쪽 아래의 좌표를 입력받아 색종이 부분을 리스트에서 1로 바꾼다.(색종이 한 변의 길이는 10이다.)리스트에서 1인 값들의 합을 구하면 색종이가 붙은 넓이를 구할 수 있다.paper=[[0 for _ in range(100)] for _ in range(100)]n=int(input())for _ in range(n): y,x=map(int, input().split()) for i in range(x,x+10): for j in range(y,y+10): paper[i][j]=1print(sum(row.count(1) ..