1. 나머지 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/120810
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(num1, num2):
return num1 % num2
2. 두 수의 차 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/120803
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(num1, num2):
answer = num1-num2
return answer
3. 숫자 비교하기
https://school.programmers.co.kr/learn/courses/30/lessons/120807
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(num1, num2):
if num1 == num2:
return 1
else:
return -1
4. 나이 출력
https://school.programmers.co.kr/learn/courses/30/lessons/120820
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(age):
answer = 2022 - age + 1
return answer
5. 두 수의 나눗셈
https://school.programmers.co.kr/learn/courses/30/lessons/120806
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(num1, num2):
result = (num1 / num2) * 1000
return int(result)
POINT!
정수부분을 return 해줘야하기 때문에 마지막에 int붙여주기
6. 몫 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/120805
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(num1, num2):
result = num1 // num2
return result
7. 두 수의 곱 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/120804
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(num1, num2):
result = num1 * num2
return result
8. 두 수의 합 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/120802
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(num1, num2):
result = num1 + num2
return result
9. 각도기
https://school.programmers.co.kr/learn/courses/30/lessons/120829
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(angle):
if 0 < angle < 90:
return 1
elif angle == 90:
return 2
elif 90 < angle < 180:
return 3
else:
return 4
POINT!
콜론(:)은 이제부터 들여쓰기 되는 블록이 시작된다는 뜻입니다.
그래서 if,elif,else,for,while,def,class 끝에는 항상 콜론(:)을 붙여야해요!
10. 양꼬치
https://school.programmers.co.kr/learn/courses/30/lessons/120830
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(n, k):
free_drink = n // 10
real_k = k - free_drink
total = n * 12000 + real_k * 2000
return total
POINT!
코드를 작성하는 흐름 = 최종결과를 먼저 생각하고, 필요한 조건을 거슬러 올라가 조립하는 방식
for문 시작~
11. 짝수의 합
https://school.programmers.co.kr/learn/courses/30/lessons/120831
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(n):
total = 0
for i in range(1, n+1):
if i % 2 == 0:
total += i # total에 i를 더해서 다시 total에 넣는다
return total
12. 배열의 평균값
https://school.programmers.co.kr/learn/courses/30/lessons/120817
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
방법 1)
def solution(numbers):
return sum(numbers) / len(numbers)
방법 2)
def solution(numbers):
total = 0
for i in numbers:
total += i
average = total/len(numbers)
return average
13. 배열 뒤집기
https://school.programmers.co.kr/learn/courses/30/lessons/120821
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
방법 1) reversed 함수
def solution(num_list):
return list(reversed(num_list))
reversed()는 리스트, 문자열, 튜플 처럼 순서가 있는 자료형이면 바로 넣을 수 있어요.
방법 2) 슬라이싱
def solution(num_list):
return num_list[::-1]
- 구조: 리스트[시작:끝:간격]
- 시작: 어디서 출발할지(시작할 인덱스 번호)
- 끝: 어디 전까지 갈지(포함 안함)
- 간격: (+)면 앞으로, (-)면 뒤로몇칸씩 건너뛸지(= 간격의 절대값)
즉, 부호가 방향을 결정합니다. - 예시)
range(1, 6, 1) # 1 → 2 → 3 → 4 → 5 (앞으로)
range(5, 0, -1) # 5 → 4 → 3 → 2 → 1 (뒤로)
range(10, 0, -2) # 10 → 8 → 6 → 4 → 2 (2칸씩 뒤로)
방법 3) for문
def solution(num_list):
reversed_list = []
for i in range(len(num_list)-1, -1, -1): # 마지막 인덱스부터 0까지
reversed_list.append(num_list[i])
return reversed_list
14. 짝수, 홀수 개수
https://school.programmers.co.kr/learn/courses/30/lessons/120824
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
방법 1) for문
def solution(num_list):
even_count=0
odd_count=0
for i in num_list:
if i % 2 == 0:
even_count += 1
else:
odd_count += 1
return [even_count, odd_count]
방법 2) 좀 더 수정한 버전
def solution(num_list):
answer = [0,0]
for num in num_list:
if num % 2 == 0:
answer[0] += 1
else:
answer[1] += 1
return answer
15. 뒤집힌 문자열
def solution(my_string):
return ''.join(reversed(my_string))
join의 기본 구조
'구분자'.join(리스트나 튜플 같은 반복 가능한 객체)
- '구분자': 붙일 때 사이에 넣을 문자열
- join() 안의 값: 문자열들의 모음(리스트, 튜플, 문자열 등)
- concat(+)과 join의 차이점
- join 은 concat을 더 빠르고 효율적으로 하는 도구
- join은 반복문으로 문자열 합칠 때 + 보다 효율이 좋습니다.
16. 편지
https://school.programmers.co.kr/learn/courses/30/lessons/120898
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(message):
return len(message) * 2
17. 피자 나눠먹기
https://school.programmers.co.kr/learn/courses/30/lessons/120814
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
방법 1)
def solution(n):
return (n + 6) // 7
방법 2)
def solution(n):
if n % 7 == 0:
return n // 7
else:
return n // 7 + 1
18. 세균 증식
https://school.programmers.co.kr/learn/courses/30/lessons/120910
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(n, t):
answer = n * (2 ** t)
return answer
19. 최댓깂 만들기(1)
https://school.programmers.co.kr/learn/courses/30/lessons/120847
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(numbers):
numbers.sort()
answer = max(numbers[0] * numbers[1], numbers[-1] * numbers[-2])
return answer
20. 자릿수 더하기
https://school.programmers.co.kr/learn/courses/30/lessons/120906
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
방법 1)
def solution(n):
total = 0
for i in str(n):
total += int(i)
return total
방법 2) 컴프리헨션 문법
def solution(n):
return sum(int(i) for i in str(n))
- 문제 풀이 해석
1단계 — str(n)
- 숫자 n을 문자열로 변환
- 예: n = 1234 → "1234"
2단계 — for i in str(n)
- "1234"에서 한 글자씩 꺼냄
- 꺼내는 순서: '1', '2', '3', '4'
3단계 — int(i)
- 꺼낸 글자를 숫자로 변환
- '1' → 1, '2' → 2, ...
4단계 — int(i) for i in str(n)
- 이건 "리스트처럼" 숫자들이 생성되는 구조
- 예: [1, 2, 3, 4] 처럼 만들어짐
(여기서는 실제 리스트는 안 만들고, 바로 합계 계산에 넘김)
5단계 — sum(...)
- 안에 있는 숫자들을 모두 더함
- [1, 2, 3, 4] → 1 + 2 + 3 + 4 = 10
보충 설명
예시 1 — 리스트 컴프리헨션
nums = [int(i) for i in "1234"]
print(nums) # [1, 2, 3, 4]
"1234"에서 한 글자씩 꺼내서 숫자로 변환한 리스트 생성
예시 2 — sum() 안에서 사용
sum(int(i) for i in "1234") # [1, 2, 3, 4]의 합 → 10
여기서는 [] 대신 () 형태라 제너레이터 표현식이 돼서,
리스트를 만들지 않고 바로 합계를 계산해줘서 조금 더 효율적
- 컴프리헨션 문법 이란?
📌 컴프리헨션(Comprehension) 문법이란?
- 리스트, 딕셔너리, 집합 등을 짧게 만들 수 있는 파이썬 문법
- for 문과 조건문을 한 줄로 합친 것
- 읽는 방법:
- "for문 돌리면서 이 규칙대로 값을 만들겠다"
1. 리스트 컴프리헨션
기본 구조
예시 1 — 1부터 5까지 제곱 리스트 만들기
squares = [x**2 for x in range(1, 6)]
print(squares) # [1, 4, 9, 16, 25]
예시 2 — 문자열에서 숫자 리스트 만들기
nums = [int(ch) for ch in "1234"]
print(nums) # [1, 2, 3, 4]
2. 조건문 붙이기
even_nums = [x for x in range(10) if x % 2 == 0]
print(even_nums) # [0, 2, 4, 6, 8]
0부터 9까지 중에서 짝수만 리스트에 담기
3. 제너레이터 컴프리헨션 (괄호 () 사용)
- 리스트 [] 대신 괄호 ()를 쓰면, 리스트를 만들지 않고 값을 하나씩 생성
- sum(), max() 같은 함수 안에 쓸 때 효율적
total = sum(int(ch) for ch in "1234")
print(total) # 10
💡 정리
- [] → 리스트 생성
- () → 값을 하나씩 바로 전달(메모리 절약)
- for 앞에 오는 건 “그 값에 어떤 변환을 할지”
- for 뒤에는 “어디서 값을 꺼낼지”
'코딩 테스트 > 01. Python' 카테고리의 다른 글
| [프로그래머스]코딩테스트 Lv0 (3) (2) | 2025.08.11 |
|---|---|
| [프로그래머스] 코딩테스트 Lv0(2) (9) | 2025.08.09 |