본문 바로가기

BOJ/Python

(192)
[BOJ/백준] 11320 - 삼각 무늬 - 1 (Python) 문제문제링크한 변의 길이가 a인 정삼각형을 b인 정삼각형으로 덮으려고 한다.b가 a보다 작거나 같을 때 필요한 b정삼각형의 개수를 구하라. 풀이만약 a가 b의 배수라면 한 변에 a//b개의 삼각형 변이 들어갈 수 있다.이외에는 a의 변 일부가 남기 때문에 하나의 b 삼각형이 더 필요하므로 a//b+1개가 들어간다.이는 한 변을 기준으로 한 것이므로 넓이 기준으로 바꾸면 '한 변에 들어가는 삼각형의 변 수**2'가 된다. 코드t=int(input())for _ in range(t): a,b=map(int, input().split()) side=(a//b) if a%b!=0: side+=1 print(side**2)
[BOJ/백준] 10769 - 행복한지 슬픈지 (Python) 문자문자링크':-)'와 ':-('를 통해 메세지의 전체적인 분위기를 파악하라. 풀이count() 함수로 각 이모티콘의 개수를 센다.둘 다 없다면 none, 개수가 같으면 unsure, ':-)'가 많으면 happy, ':-('가 많으면 sad를 출력한다. 코드s=input()h=s.count(':-)')sa=s.count(':-(')if h==0 and sa==0: print('none')elif h==sa: print('unsure')elif h>sa: print('happy')else: print('sad')
[BOJ/백준] 10539 - 수빈이와 수열 (Python) 문제문제링크수열 A에서 i번째까지 요소의 합을 i로 나눈 값이 수열 B에 저장된다.수열 B의 길이와 요소가 주어질 떄, 수열 A를 구하라. 풀이입력받은 각 요소에 위치(index+1)을 곱하면 수열 A에서의 i번째까지의 합이 된다.이 값에 수열A에 저장되어있는 값들의 합을 뺀 값은 A에서의 i번째 요소의 값이다.이 값을 A에 추가하고 마지막 요소까지 처리가 끝나면, 원래의 수열 A가 된다. 코드n=int(input())B_nums=list(map(int, input().split()))A_nums=[]for i in range(n): B_nums[i]*=(i+1) A_nums.append(B_nums[i]-sum(A_nums))print(*A_nums, sep=' ')
[BOJ/백준] 10419 - 지각 (Python) 문제문제링크교수님의 지각시간 t의 제곱은 수업을 일찍 마쳐주는 시간 s과 같다.수업시간 d가 주어질 때, 교수님이 지각할 수 있는 최대 시간을 구하라. 풀이문제에서 주어진 식을 이용하면 't**2+t따라서 t가 될 수 있는 후보 중 최대값은 d^(1/2)이고 t는 0 이상의 정수값이다.while문으로 t가 0이 되는 순간 혹은 위의 식을 만족하는 순간까지 t를 1씩 줄이며 반복한다.while문이 종료되고 난 후의 t값이 위의 식을 충족하는 최대의 t값이 된다. 코드t=int(input())for _ in range(t): d=int(input()) t=int(d**0.5) while t**2+t>d: if t==0: break t-=1 p..
[BOJ/백준] 10409 - 서버 (Python) 문제문제링크주어진 순서대로 일을 처리할 것이다.시간과 일마다 필요한 시간이 주어질 때, 몇 번째 작업까지 완료할 수 있는가? 풀이주어진 시간과 비교해 이 시간보다 작거나 같으면서 가장 많은 작업을 완료해야 한다.for문으로 전체에서 뒤에서부터 작업을 하나씩 제외하면서 합을 구하는 방식으로 문제를 해결한다.이 경우 주어진 시간보다 작거나 같아지는 최초의 순간에 반복을 멈추고 결과를 출력한다. 코드n,t=map(int, input().split())works=list(map(int, input().split()))for i in range(n,-1,-1): if sum(works[:i])
[BOJ/백준] 9501 - 꿍의 우주여행 (Python) 문제문제링크우주선의 개수와 목적지까지의 거리가 주어지고, 각각의 우주선의 속도, 연료양, 연료소비율이 주어질 때,목적지에 도착하는 우주선의 수를 구하라. 풀이주어진 연료로 갈 수 있는 거리는 '연료/연료소비율(=연료양/시간)*속도(=거리/시간)'이다.계산한 값이 목적지까지의 거리보다 크거나 같다면 도착할 수 있는 것이다. 코드t=int(input())for _ in range(t): n,d=map(int, input().split()) possible=0 for _ in range(n): v,f,c=map(float, input().split()) if (f/c)*v>=d: possible+=1 print(possible)
[BOJ/백준] 23971 - ZOAC 4 (Python) 문제문제링크테이블이 W개, H행에 걸쳐있을 때, 모든 참가자는 세로로 N칸, 가로로 M칸 이상 비우고 앉아야 한다.최대 몇 명을 수용할 수 있는가. 풀이(h + n)과 (w+m)은 각각 h와 w을 (n+1), (m+1)로 나눴을 때 나머지 행을 채우기 위해 더해준 것이다.이 경우 맨 끝 자리에 사람이 앉았을 경우도 고려된다.각 행과 열에 앉을 수 있는 사람 수를 구해 둘을 곱하면 된다. 코드h,w,n,m=map(int, input().split())row=(h+n)//(n+1)col=(w+m)//(m+1)print(row*col)
[BOJ/백준] 4435 - 중간계 전쟁 (Python) 문제문제링크각 군대의 종족 점수는 아래와 같다.간달프사우론호빗1오크1인간2인간2엘프3워그(늑대)2드워프3고블린2독수리4우럭하이3마법사10트롤5  마법사10이를 토대로 각 군대의 점수를 비교해 어느쪽이 이기는지 구하라. 풀이각 군대의 종족 수를 리스트 형태로 입력받는다.리스트의 각 요소에 접근해 가중치(종족별 점수)를 곱한 후 총 합을 구한다.이 합을 비교하여 점수가 큰 쪽이 이기는 것이다. 코드n=int(input())for i in range(1,n+1): g=list(map(int, input().split())) s=list(map(int, input().split())) good=g[0]+g[1]*2+g[2]*3+g[3]*3+g[4]*4 +g[5]*10 evil=s[0]+s[..