본문 바로가기

BOJ/Python

(192)
[BOJ/백준] 32929 - UOS 문자열 (Python) 문제문제링크UOS가 반복되는 문자열이 있을 때 이 문자열의 x번째 문자를 구하라. 풀이U, O, S로 이루어진 리스트를 생성한다.이 세 문자가 반복되므로 x를 3으로 나눈 나머지에 해당하는 인덱스에 접근하면 되는데,x는 0부터 시작하는 것이 아니므로 1을 빼준 후 나누면 된다. 코드import sysinput=sys.stdin.readlineUOS=['U', 'O', 'S']x=int(input())print(UOS[(x-1)%3])
[BOJ/백준] 1107 - 리모컨 (Python) 문제문제링크리모컨에 숫자 0부터 9, +, -가 있고 이동하려는 채널은 n이다.버튼을 최소한으로 눌러 이동하려고 할 때, 몇 번 눌러야하는가? 풀이고장난 버튼 수 m이 0이면 고장난 버튼은 입력을 받지 않아야 하므로 if-else문으로 분리한다.최소 횟수를 +와 -만 사용했을 때 이동 횟수로 정의한다.브루트포스 알고리즘을 사용해 이동할 수 있는 모든 채널을 다 탐색한다.각 자리의 중 하나라도 고장난 버튼이 있다면 다음 수로 넘어가고, 없다면 이전에 정의한 최소횟수와 수의 자리수+이동거리 중 최소값을 최소횟수로 갱신한다.모든 탐색이 끝나고 나서 최소횟수를 출력하면 된다. 코드n=int(input())m=int(input())if m!=0: broken=list(input().split())else: ..
[BOJ/백준] 1476 - 날짜 계산 (Python) 문제문제링크1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19 이고 어떤 수를 범위를 넘어가면 다시 1이 된다.E S M으로 주어진 연도가 우리가 알고있는 연도로는 몇 년인지 구하라. 풀이E, S, M은 우리가 알고 있는 연도를 각각 범위의 최댓값으로 나눈 나머지와 같다.year을 1로 설정하고 year를 각 최댓값으로 나눈 나머지가 E, S, M가 모두 같은경우에 우리가 원하는 가장 빠른 연도이다.따라서 year에서 각각  E, S, M을 뺀 후 각 최댓값으로 나눈 나머지가 0과 같은 경우와 같다. 코드e,s,m=map(int, input().split())year=1while True: if (year-e)%15==0 and (year-s)%28==0 and (year-m)%19==0..
[BOJ/백준] 32684 - 장기 (Python) 문제문제링크각 기물에 대한 점수가 주어진다. 무승부를 방지하기 위해 후수에게는 1.5점을 추가로 부여한다.궁차포마상사졸-1375332경기 도중 남은 기물의 수가 주어질 때, 점수가 더 높은 사람을 출력하라. 이때 궁의 수는 주어지지 않는다. 풀이궁을 제외하고 각 기물의 점수를 리스트에 저장한다.두 명의 기물의 수를 리스트로 저장한다.첫 번째 사람을 기준으로 하여 총 점수를 계산하고자 한다.동일한 기물의 수의 차를 구해 해당 기물의 점수를 곱하고 이렇게 구한 모든 점수를 더한다.후수에게는 1.5점을 더 주기 때문에 이 점수는 빼주어야 한다.선수를 양수로 계산한 점수이기 때문에, 양수면 선수가, 음수면 후수가 점수가 더 높다. 코드weigh=[13,7,5,3,3,2]first=list(map(int, inp..
[BOJ/백준] 17598 - Animal King Election (Python) 문제문제링크9명이 투표를 할 때, Tiger과 Lion 중 더 표를 많이 받은 측을 구하라. 풀이딕셔너리에 입력받은 측의 value에 1을 추가한다.9명의 투표가 끝나면, get()함수로 딕셔너리의 키에 대한 값에 접근한다.key 매개변수에 저장하여 딕셔너리에서 value가 max인 키를 king에 저장된다. king을 출력하면 더 많은 표를 가진 측의 key가 출력된다. 코드cand={'Tiger':0, 'Lion':0}for _ in range(9): s=input() cand[s]+=1king=max(cand, key=cand.get)print(king)
[BOJ/백준] 14910 - 오르막 (Python) 문제문제링크주어진 n개의 정수가 비내림차순으로 나열되어 있는지 판단하라. 풀이문제에서 말하는 비내림차순은 오름차순과 같다.따라서 리스트로 받은 숫자들을 정렬(default 오름차순)한 후,원래의 리스트와 비교해 같다면 비내림차순으로 나열된 것이다. 코드nums=list(map(int, input().split()))n_desc=sorted(nums)if nums==n_desc: print('Good')else: print('Bad')
[BOJ/백준] 14582 - 오늘도 졌다 (Python) 문제문제링크경기는 1회 초 -> 1회 말 -> 2회 초 -> ... -> 9회말 순으로 이루어진다.초에는 울림 제미니스가, 말에는 스타트링크 걸리버스의 득점이 이루어진다고 하자.울림 제미니스가 역전패를 했는지 판단하라. 풀이각 팀의 득점을 리스트로 저장한다.울림 제미니스의 점수를 양수로, 스타트링크 걸리버스의 점수를 음수로 하여 총 합을 구하자.초 -> 말 -> 초 -> 말 -> ...을 반복하며 한 번이라도 총 합이 양수가 된다면 반복문을 종료하고 'Yes'를 출력하게 된다. 코드start=list(map(int, input().split()))last=list(map(int, input().split()))score=0comeback_loss='No'for i in range(9): score+..
[BOJ/백준] 11586 - 지영 공주님의 마법 거울 (Python) 문제문제링크거울의 크기와 비친 상의 모습이 주어진다.마법거울의 심리상태가 1이면 그대로, 2면 좌우 반전하여, 3이면 상하 반전하여 출력하라. 풀이리스트에 각 줄을 문자열 형태로 저장한다.k==1인 경우 각 줄에 문자열을 그대로 출력한다.2인 경우, 각 줄에 문자열을 뒤집어 출력한다.3인 경우, 상하 반전이므로  column에 해당하는 값은 0부터 n-1일까지 증가하는 순으로 그대로 출력하면 된다.row에 해당하는 값을 for문으로 (n-1,-1,-1)로 접근하여 입력받은 맨 아래의 줄부터 위 방향으로 한 줄씩 출력한다. 코드n=int(input())mirror=[]for _ in range(n): mirror.append(input())k=int(input())if k==1: print(*m..