목록Python (281)
jyamethyst21 님의 블로그
문제: 사각형의 가로 길이와 원의 반지름을 입력받고, 이를 활용하여 운동장 둘레를 구하면 되는 문제이다. 풀이:d1 = int(input())d2 = int(input())print((d1*2)+(2*3.141592*d2))그림 설명이 잘 나와있어서 추가 설명은 필요없을 것 같지만, 간단하게라도 설명하겠다.우선 둘레의 길이만 구하면 되기 때문에 상기 문제 속에 있는 이미지를 기준으로 주황색선의 길이만 구하면 된다.먼저 사각형 부분은 입력받은 가로 길이가 2번 있기 때문에 *2를, 그리고 원은 원 둘레를 구하는 공식을 써서 구하면 된다. 원 둘레 공식은 다음과 같다.2 * π * 반지름의 길이 입력값을 그대로 식에 맞춰 곱한 뒤 더하기만 하면 되는 간단한 문제이다!
문제:N을 입력받고 1부터 N까지 비교해서 4와 7로만 이루어진 숫자 중 가장 큰 값을 출력하면 되는 문제이다. 풀이:N = int(input())for i in range(N, 0, -1): for j in str(i): if j != '4' and j != '7': break else: print(i) break 우선 1부터 N까지 비교하는 방법과 N부터 1씩 내려가는 방법이 있는데 문제는 가장 큰 값을 구하면 되므로 당연히 후자가 더 효율적일 것이다. 필자도 해당 방법을 사용하였다.그래서 반복문을 N부터 -1씩 줄어들도록 조건을 설정하였고, 4 또는 7이 아닌 4와 7로만 이루어져있는 숫자를 찾아야 하기 때문에 이 계산을 위해 s..
문제: 수를 세 개 입력받았을 때, 계산한 결과값이 참이 되도록 출력하면 된다.예를 들어 5 3 8을 입력받았을 때 5와 3을 더하면 8이 된다. 그러니 5+3=8이라고 출력하면 된다. 풀이:A, B, C = map(int,input().split())if (A+B==C): print(f'{A}+{B}={C}')elif (A-B==C): print(f'{A}-{B}={C}') elif (A*B==C): print(f'{A}*{B}={C}') elif (A/B==C): print(f'{A}/{B}={C}')elif (A==B+C): print(f'{A}={B}+{C}') elif (A==B-C): print(f'{A}={B}-{C}') elif (A==B*C): pri..
문제: 현재 밤고가 가지고 있는 돈(100원 기준)과 초코바의 가격을 비교해서, 살 수 있다면 Yes, 아니면 No를 출력하면 되는 문제이다. 풀이:N, M = map(int,input().split())if N * 100 >= M: print("Yes")else: print("No")100원 단위이기 때문에 입력받은 100원의 개수와 100을 곱해 총 금액을 구한다. 그리고 이 수와 초코바의 가격인 M을 비교해서 현재 가지고 있는 액수가 더 크다면 Yes를, 그렇지 않으면 No를 출력한다. 참고:# ver.1print("Yes" if int(input().split()[0]) * 100 >= int(input().split()[1]) else "No")# ver.2n, m = map(int,..
문제 gum gum for jay jay 라고 입력받은 수를 출력하면 된다. 풀이total = 0while True: try: input() except: break total += 1print(total)횟수를 저장할 total 변수를 선언하고 무한 루프를 돌도록 while문을 작성하였다. 일반적으로 백준에서는 반복할 횟수가 주어지거나 직접 입력받도록 하는 경우가 많은데, 이번 문제는 종료를 위한 횟수가 주어지지 않는다. 파이썬에서는 이런 상황에서 주로 try~except문을 사용한다. try문은 실행할 코드, except은 try문에서 오류가 발생할 경우 실행할 코드를 넣으면 된다. 그래서 상기 코드와 같이 기본적으로 input() 즉, 문자를 입력받도록 하고..
문제: 수를 입력받고 1부터 입력받은 수까지 순회하면서 각 자릿수를 전부 더했을 때, 입력받은 수의 약수라면 카운트해서 개수의 합을 출력하면 된다. 풀이:n = int(input())count = 0for i in range(1, n + 1): digit_sum = sum(map(int, str(i))) if i % digit_sum == 0: count += 1print(count)1부터 입력값까지 반복문을 돈다.입력받은 수는 숫자형이므로 순회를 할 수가 없다. 그래서 이를 문자열로 바꾼 다음 각 자릿수를 숫자형으로 변환하여 보다 쉽게 각 자릿수의 합을 구하기 위해 map 함수를 활용한다. map 함수는 map(함수, 반복 가능한 객체)로 사용하며 반복 가능한 객체를 함수형태로 ..
문제: A, B 범위가 주어지고, 브실이가 푼 문제 수와 친구가 될 수 있는 문제 수 차이에 대한 기준 K가 주어질 때 총 몇명의 사람과 친구가 될 수 있는지 출력하는 문제이다. 아무와도 친구가 될 수 없다면 IMPOSSIBLE을 출력하면 된다. 풀이:A, B = map(int, input().split())K, X = map(int, input().split())start = max(A, K - X)end = min(B, K + X)if start > end: print("IMPOSSIBLE")else: print(end - start + 1)A, B, K, X를 입력받고 시작범위와 끝범위를 구한다.우선 두개의 값을 비교해서 겹치는 부분만 뽑아야하기 때문에 각 범위의 최소값인 A와 K-X 중..
문제: 재수강할 과목과 수강신청 가능한 과목 목록을 비교해서 앞 5자리가 일치하면 수강이 가능하기 때문에 재수강으로 인정되는 과목 개수를 구해서 출력하면 된다. 풀이:base_sub = input()N = int(input())count = 0for i in range(N): com = input() if base_sub[:5] == com[:5]: count += 1print(count)기준이 되는 과목과 목록 개수를 입력받고 반복문을 돈다.N만큼 돌면서 com에 각 과목명을 입력받고 만약 기준이 되는 과목과 해당 과목명의 앞자리 5개가 일치하면 count 값을 1 증가하면 된다. 최종적으로 합산된 count 값을 출력하면 풀 수 있다. 해당 문제에서 주의할 점은 인덱스가 0부..
문제: 문제 수와 심사위원의 수가 주어졌을 때, 찬반 결과에 따라 해당 문제가 주어질지 안 주어질지 구해서 출제되는 총 문제 수를 출력하는 문제이다. 풀이:N, M = map(int,input().split())count = 0for i in range(N): acc = input() check = acc.count('O') if check >= M / 2: count += 1print(count)문제 수와 심사위원의 수를 N, M에 넣고 총 문제 수를 출력할 count 값을 선언한다.N만큼 반복하면서 문자열을 입력받고, count 함수를 사용해서 O의 개수를 확인한다.그리고 이 수가 M / 2 와 같거나 크면(과반수보다 크면) count 값을 1 추가한다.최종적으로 coun..
문제: 5를 6, 6을 5로 잘못 볼 때가 있는 상근이는 두 수를 더했을 때의 최솟값과 최댓값을 구하고 싶어한다.이를 계산해주는 코드를 짜보자. 풀이:A, B = map(str,input().split())min_A = int(A.replace('6','5'))max_A = int(A.replace('5','6'))min_B = int(B.replace('6','5'))max_B = int(B.replace('5','6'))print((min_A+min_B), (max_A+max_B))일단 5를 6으로, 6을 5로 잘못 볼 때가 있다고 해서 모든 경우의 수를 구할 필요는 없다.결국 두 수에 모든 5를 6으로 볼 때가 가장 큰 수이고 두 수에 모든 6을 5로 볼 때가 가장 작은 수이기 때문에 파이썬의 re..
