코딩테스트 공부/백준 문제 15

백준 [Python] 4673번: 셀프 넘버

✨ 풀이과정 1 2 3 4 5 6 7 8 9 num = set(range(1,10001)) # 1부터 10000까지 숫자 set에 저장 n = set() # 생성자가 있는 숫자 set에 저장 for i in num: for j in str(i): # ex) 102이면 1,0,2로 접근 (숫자 -> 문자열로 변환) i += int(j) # ex) 102 + 1 + 0 + 2 와 같이 생성자 계산 (문자열 -> 숫자로 변환) n.add(i) selfnum = sorted(num - n) # 10000보다 작거나 같은 셀프 넘버 저장 및 오름차순 정렬 for i in selfnum: print(i) # 셀프 넘버 한 줄에 하나씩 출력 cs ❗ 어렵다 어려워.. 4673번: 셀프 넘버 셀프 넘버는 1949년 인..

백준 [Python] 4344번: 평균은 넘겠지

✨ 풀이과정 1 2 3 4 5 6 7 8 9 10 11 12 13 n = int(input()) for i in range(n): case = list(map(int,input().split())) average = sum(case[1:]) / case[0] student = 0 for j in case[1:]: if j >= average: student += 1 ratio = student/case[0]*100 print(f'{ratio:.3f}%') cs 4344번: 평균은 넘겠지 대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다. www.acmicpc.net

백준 [Python] 5958번: OX퀴즈

✨ 풀이과정 1 2 3 4 5 6 7 8 9 10 11 12 n = int(input()) for i in range(n): test = input() score = 0 sum = 0 for i in range(len(test)): if test[i] == "O": score += 1 sum += score else: score = 0 print(sum) cs ✔ 포인트 : O가 연속으로 나올 경우 점수가 올라가고 X가 나올 경우 초기화 8958번: OX퀴즈 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수 www.acmicpc.net

백준 [Python] 1546번: 평균

문제 세준이는 기말고사를 망쳤다. 세준이는 점수를 조작해서 집에 가져가기로 했다. 일단 세준이는 자기 점수 중에 최댓값을 골랐다. 이 값을 M이라고 한다. 그리고 나서 모든 점수를 점수/M*100으로 고쳤다. 예를 들어, 세준이의 최고점이 70이고, 수학점수가 50이었으면 수학점수는 50/70*100이 되어 71.43점이 된다. 세준이의 성적을 위의 방법대로 새로 계산했을 때, 새로운 평균을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보다 크다. 출력 첫째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대..

백준 [Python] 3052번: 나머지

문제 두 자연수 A와 B가 있을 때, A%B는 A를 B로 나눈 나머지 이다. 예를 들어, 7, 14, 27, 38을 3으로 나눈 나머지는 1, 2, 0, 2이다. 수 10개를 입력받은 뒤, 이를 42로 나눈 나머지를 구한다. 그 다음 서로 다른 값이 몇 개 있는지 출력하는 프로그램을 작성하시오. 입력 첫째 줄부터 열번째 줄 까지 숫자가 한 줄에 하나씩 주어진다. 이 숫자는 1,000보다 작거나 같고, 음이 아닌 정수이다. 출력 첫째 줄에, 42로 나누었을 때, 서로 다른 나머지가 몇 개 있는지 출력한다. ✨풀이과정 1 2 3 4 5 6 7 a = [] b = [] for i in range(10): a.append(int(input())) b.append(a[i] % 42) b = set(b) # 중복 ..

백준 [Python] 2577번: 숫자의 개수

문제 세 개의 자연수 A, B, C가 주어질 때 A × B × C를 계산한 결과에 0부터 9까지 각각의 숫자가 몇 번씩 쓰였는지를 구하는 프로그램을 작성하시오. 예를 들어 A = 150, B = 266, C = 427 이라면 A × B × C = 150 × 266 × 427 = 17037300 이 되고, 계산한 결과 17037300 에는 0이 3번, 1이 1번, 3이 2번, 7이 2번 쓰였다. 입력 첫째 줄에 A, 둘째 줄에 B, 셋째 줄에 C가 주어진다. A, B, C는 모두 100보다 크거나 같고, 1,000보다 작은 자연수이다. 출력 첫째 줄에는 A × B × C의 결과에 0 이 몇 번 쓰였는지 출력한다. 마찬가지로 둘째 줄부터 열 번째 줄까지 A × B × C의 결과에 1부터 9까지의 숫자가 각각..

백준 [Python] 1110번: 더하기 사이클

문제 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, 주어진 수의 가장 오른쪽 자리 수와 앞에서 구한 합의 가장 오른쪽 자리 수를 이어 붙이면 새로운 수를 만들 수 있다. 다음 예를 보자. 26부터 시작한다. 2+6 = 8이다. 새로운 수는 68이다. 6+8 = 14이다. 새로운 수는 84이다. 8+4 = 12이다. 새로운 수는 42이다. 4+2 = 6이다. 새로운 수는 26이다. 위의 예는 4번만에 원래 수로 돌아올 수 있다. 따라서 26의 사이클의 길이는 4이다. N이 주어졌을 때, N의 사이클의 길이를 구하는 프로그램을 작성하시오. 입력 첫째 ..

백준 [Python] 10951번: A+B - 4

문제 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10) 출력 각 테스트 케이스마다 A+B를 출력한다. 예제 입력 1 1 2 3 3 4 9 8 5 2 예제 출력 2 5 7 17 7 ✨ 풀이 1 2 3 4 5 6 while True: try: A, B = map(int,input().split()) print(A+B) except: break cs ✔ try - except문을 이용해서 풀어야함 - 그냥 while문만 쓸 경우 런타임 에러 발생 10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하..

백준 [Python] 2439번: 별 찍기 - 2

문제 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오. 입력 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다. 출력 첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다. 예제 입력 5 예제 출력 * ** *** **** ***** ✨풀이(1) - 내가 푼 방식 1 2 3 N = int(input()) for i in range(1,N+1): print(" "*(N-i)+"*"*i) cs - 별(*)이 오른쪽 정렬 상태로 출력되어야 하기 때문에, 먼저 왼쪽에 공백을 주고 별을 출력하는 방식을 생각했다. ✔ print(" "*(N-i), "*"*i) 형식은 오류발생 ✨풀이(2) - format 1 2 3 int(i..

728x90