목록Python (282)
jyamethyst21 님의 블로그
문제: 테스트 케이스의 개수와 테스트 케이스별로 수 N개를 입력받고, 각 테스트 케이스마다 입력받은 수를 더해서 출력하는 문제이다. 풀이:N = int(input())for i in range(N): score = sum(map(int,input().split())) print(score)테스트 케이스의 개수인 N을 입력받고 반복문을 해당 수만큼 돈다.반복문을 돌면서 score에 각 테스트 케이스별 수를 띄어쓰기를 기준으로 전부 입력받은 뒤 더해서 저장하고 이 변수를 바로 출력하면 문제에서 요구하는 것을 충족할 수 있게 된다.
문제: A, B의 점수가 라운드별로 주어질 때 각각의 승리 횟수를 기록한 뒤, 최종적으로 모든 라운드가 끝난 다음 몇 번씩 이겼는지 그 횟수를 출력하는 문제이다. 풀이:import sysinput = sys.stdin.readlineround = int(input())a_score, b_score = 0, 0for i in range(round): a_round_score, b_round_score = map(int,input().split()) if a_round_score > b_round_score: a_score += 1 elif a_round_score 라운드 수를 입력받고 해당 라운드별로 A, B의 점수를 입력받는다.그 다음 각 점수를 입력받자마자 어느 쪽의 점수가..
문제: 치킨, 콜라, 맥주의 개수를 입력받고 치킨 한마리당 콜라 2개 또는 맥주 1개를 반드시 먹어야하므로 이 조합을 계산해서 최종적으로 시켜먹을 수 있는 치킨의 총 개수를 구하는 문제이다. 풀이:chic = int(input())co, be = map(int,input().split())total = co//2 + beprint(min(total,chic))먼저 치킨, 콜라, 맥주의 값을 입력받는다. 다음으로 필자의 경우 콜라가 치킨 한개당 2개가 소모되므로 먹을 수 있는 치킨의 총 개수를 구하기 위해 total에 콜라를 2로 나눈 몫, 맥주의 값을 더해서 계산해두었다.그럼 음료를 기준으로 먹을 수 있는 치킨의 개수인 total과 치킨의 값이 구해지므로 여기 중에서 작은 개수를 출력하면 된다.작은 개수..
문제: 문자열을 입력받고, 해당 문자열에 MOBIS가 들어있으면 YES를, 그렇지 않다면 NO를 출력하는 문제이다. 풀이:N = input()RESULT = 'MOBIS'for i in RESULT: if i not in N: print('NO') breakelse: print('YES')N에 문자열을 저장하고, RESULT라는 변수에 정답인 MOBIS를 넣는다.그리고 이 정답 문자열의 각 자릿수를 떼서 입력받은 문자열과 비교한다. 입력받은 문자열에 각 자릿수가 1개라도 해당하지 않는다면 NO를, 그렇지 않다면 YES를 출력한다.
문제: 한 쌍의 양말을 만들기 위해 남는 나머지의 숫자를 구하는 문제이다. 풀이:result = 0for i in range(5): num = int(input()) result ^= numprint(result)필자는 해당 문제를 풀기 위해 XOR 연산을 활용하였다. XOR 연산은 같은 수라면 0이 되고 그게 아니면 그대로 값을 유지하게 한다. 예를 들어 3^3이면 0이 되고, 0^5면 5가 남는다.XOR 계산을 위한 result 변수를 선언한 뒤, 반복문을 다섯번 돈다. 입력을 받은 다음 result와 XOR 연산을 수행한다. 처음 반복문을 돌고 입력값이 1 2 3 2 1 일 때, 계산은 다음과 같이 진행된다.0 ^ 1 = 1 1 ^ 2 = 3 3 ^ 3 = 00 ^ 2 = 22 ^ 1 =..
문제: 현재 시간과 나트륨을 던질 시간을 입력받고 해당 시간의 차이를 구하면 된다. (둘의 차이가 곧 대기 시간이므로) 풀이:now = input()bomb = input()h1, m1, s1 = map(int, now.split(":"))h2, m2, s2 = map(int, bomb.split(":"))now_sec = h1 * 3600 + m1 * 60 + s1bomb_sec = h2 * 3600 + m2 * 60 + s2diff = bomb_sec - now_secif diff 상기 코드는 다음과 같은 의미이다. 1. 현재 시간과 폭탄을 던질 시간을 입력받는다.2. 입력 예제와 동일하게 ':'을 기준으로 시간, 분, 초를 구분하도록 split 함수를 쓴 뒤, 각 변수에 시, 분, 초만 따로 떼서 ..
문제: 진호의 MBTI와 N명의 친구들의 MBTI를 입력받을 떄, 진호와 MBTI가 같은 친구의 수를 세면 된다. 풀이:jh_mbti = input()N = int(input())li = []for i in range(N): li.append(input())count = 0for j in li: if j == jh_mbti: count+=1print(count)진호의 MBTI와 친구의 수를 입력받고, 친구의 수만큼 반복문을 돈다.그 후 해당 수만큼 MBTI를 입력받은 뒤, li라는 리스트에 값을 추가한다.그리고 개수를 세서 저장할 변수를 선언하고 마찬가지로 친구들의 MBTI가 모두 저장된 li를 전부 돌면서 진호의 MBTI와 같은지 비교하고, 같으면 count 변수를 1씩 더해준다..
문제: 방학 기간, 풀어야 하는 국어·수학 총 페이지, 하루에 풀어야 하는 각 과목의 페이지 수가 주어질 때, 놀 수 있는 최대 일수를 구하는 문제이다. 풀이:import mathL = int(input())A = int(input())B = int(input())C = int(input())D = int(input())sub_ko = math.ceil(A/C)sub_math = math.ceil(B/D)print(L-max(sub_ko, sub_math)) 올림을 위해 math 라이브러리를 import하고 각 변수에 방학 일 수, 각 과목의 총 페이지, 하루에 풀어야하는 페이지를 입력받는다.이후 ceil(올림해주는 함수)을 활용해서 각 과목별 총 페이지/하루에 풀어야 하는 페이지의 올림인 수를 sub_..
문제: 모든 문제에 대한 점수를 입력받을 때 첫번째로 제시된 문제가 가장 쉬운 문제라면 ez를, 어렵다면 hard를 둘 다 아니라면 ?를 출력하는 문제이다. 풀이:n = int(input())li = []for i in range(n): k = int(input()) li.append(k)obj = li[0]ma = max(li)mi = min(li)if obj >= ma: print('hard')elif obj 문제 개수를 입력받고 해당 수만큼 반복문을 돈다.입력값을 전부 li라는 리스트에 추가하고 그 중 첫번째 입력값을 obj에 넣고, 각각의 최대값, 최소값을 뽑아 변수에 저장한다.이후 조건문을 통해 obj가 최대값보다 같거나 클 경우 hard를 작거나 같다면 ez를, 둘 다 아니라면..
문제: 100,000 이하의 수를 입력받을 때, 2024의 배수라면 Yes, 그렇지 않으면 No를 출력하는 문제이다. 풀이:number = int(input())print('Yes' if number%2024==0 and number오늘은 오랜만에 컴프리헨션을 사용하였다. 역시 이렇게 푸니까 확실히 간단하다.number에 정수를 입력받고 조건문을 활용하여, 2024로 나눠떨어지는지(=배수인지) 그리고 100000 이하의 정수인지를 검사하고 맞다면 Yes를, 아니라면 No를 출력하도록 하면 된다.
