문제 링크 9506번: 약수들의 합 어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라. www.acmicpc.net 문제 풀이 while 1: n = int(input()) if n == -1: break divisor = [] for i in range(1, n): if n % i == 0: divisor.append(i) if n == sum(divisor): print(n, "=", " + ".join(list(map(str, divisor)))) else: print(n, "is NOT perfect.") *key point: 1부터 n-1까지만 반복..
문제 링크 2501번: 약수 구하기 첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다. N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다. www.acmicpc.net 문제 풀이 n, k = map(int, input().split()) for i in range(1, n + 1): if n % i == 0: k -= 1 if k == 0: print(i) break else: print(0) *key point: n을 1부터 n까지의 수로 나누어 보다가 약수인 경우(나머지 = 0) k 값을 1 씩 뺀다. k가 0이 될 때 수 i 가 답이되며, for문을 전부 돌게되는 경우 0을 출력한다.
문제 링크 2903번: 중앙 이동 알고리즘 상근이는 친구들과 함께 SF영화를 찍으려고 한다. 이 영화는 외계 지형이 필요하다. 실제로 우주선을 타고 외계 행성에 가서 촬영을 할 수 없기 때문에, 컴퓨터 그래픽으로 CG처리를 하려고 한다. www.acmicpc.net 문제 풀이 n = int(input()) print(((2**n) + 1) ** 2) *key point: 그냥 수학 문제이다..! 각 사각형은 다음 단계로 가면서 가로 세로로 이등분이 되는데, 이로 인해 전체 그림에서 한 변에는 2^n+1의 점이 생긴다. 변이 2배씩 되니까 2^n, 모서리는 하나가 추가 되니가 +1이라고 생각하면 편하다. 따라서 전체 점의 개수는 제곱을 한 (2^n+1)^2이 된다.
문제 링크 2720번: 세탁소 사장 동혁 각 테스트케이스에 대해 필요한 쿼터의 개수, 다임의 개수, 니켈의 개수, 페니의 개수를 공백으로 구분하여 출력한다. www.acmicpc.net 문제 풀이 t = int(input()) for _ in range(t): c = int(input()) for i in [25, 10, 5, 1]: print(c // i, end=" ") c %= i *key point: 반복문을 활용하면 쉽게 해결할 수 있다. 반복문의 범위를 대부분 range함수를 이용해서 설정했지만, 원하는 값에 대해서만 하고 싶으면 리스트를 사용하면 된다.
문제 링크 11005번: 진법 변환 2 10진법 수 N이 주어진다. 이 수를 B진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 문제 풀이 num_list = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" n, b = map(int, input().split()) answer = "" while n != 0: answer = num_list[n % b] + answer n //= b print(answer) *key point: 2745번 문제처럼 0~Z까지를 담은 문자열을 이용한다.
문제 링크 2745번: 진법 변환 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 www.acmicpc.net 문제 풀이 num_list = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" n, b = input().split() answer = 0 for i, num in enumerate(n[::-1]): answer += int(b) ** i * num_list.index(num) print(answer) *key point: 0부터 Z까지가 포함된 문자열을 활용한다. 이 문자열의 index가 곧 값이 됨을 이용한다. *더 공부한 내용..
문제 링크 10798번: 세로읽기 총 다섯줄의 입력이 주어진다. 각 줄에는 최소 1개, 최대 15개의 글자들이 빈칸 없이 연속으로 주어진다. 주어지는 글자는 영어 대문자 ‘A’부터 ‘Z’, 영어 소문자 ‘a’부터 ‘z’, 숫자 ‘0’ www.acmicpc.net 문제 풀이 board = [] max_len = 0 for i in range(5): row = list(input()) if len(row) > max_len: max_len = len(row) board.append(row) for i in range(5): if max_len > len(board[i]): for _ in range(max_len - len(board[i])): board[i].append("-") for j in range..
문제 링크 25206번: 너의 평점은 인하대학교 컴퓨터공학과를 졸업하기 위해서는, 전공평점이 3.3 이상이거나 졸업고사를 통과해야 한다. 그런데 아뿔싸, 치훈이는 깜빡하고 졸업고사를 응시하지 않았다는 사실을 깨달았다! 치 www.acmicpc.net 문제 풀이 GPT = 0 CT = 0 for i in range(20): subject, credit, grade = input().split() if (grade != "P"): CT += float(credit) match grade: case "A+": grade = 4.5 case "A0": grade = 4.0 case "B+": grade = 3.5 case "B0": grade = 3.0 case "C+": grade = 2.5 case "C0"..
문제 링크 10812번: 바구니 순서 바꾸기 도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 순서대로 적혀져 있다. 바구니는 일렬로 놓여져 있고, 가장 왼쪽 바구니를 1번째 바구니, 그 다음 바구니를 2 www.acmicpc.net 문제 풀이 n, m = map(int, input().split()) answer = [i for i in range(1, n+1)] for _ in range(m): i, j, k= map(int, input().split()) answer = answer[:i-1] + answer[k-1:j] + answer[i-1:k-1] + answer[j:] print(' '.join(str(n) for n in answer)) *key point..
- Total
- Today
- Yesterday
- 20920
- 2903
- 25501
- 17103
- 4134
- 2738
- Programmers
- 2587
- til
- 벡준
- MySQL
- 항해+
- 26069
- 25192
- 코육대
- 항해 플러스
- 13241
- 13909
- Python
- 24060
- 10807
- 24313
- SQL
- programmer
- 1269
- 2053
- Wil
- 백준
- 5597
- 24723
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |