1. 머쓱이보다 키 큰 사람
https://school.programmers.co.kr/learn/courses/30/lessons/120585
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
방법 1) 일반
# 방법 1) 리스트에 넣어서 나중에 len하는 방법
def solution(array, height):
high = []
for i in array:
if height < i:
high.append(i)
return len(high)
# 방법 2) 바로 수를 세는 방법
def solution(array, height):
answer = 0
for i in array :
if height < i :
answer += 1
return answer
방법 2) 컴프리헨션 방법
def solution(array, height):
return len([i for i in array if i > height])
2. 삼각형의 완성조건(1)
https://school.programmers.co.kr/learn/courses/30/lessons/120889
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
방법 1) 일반
def solution(sides):
sides.sort()
if sides[0] + sides[1] > sides[2]:
return 1
else:
return 2
방법 2) 짧게 줄이기
def solution(sides):
sides.sort()
return 1 if sides[0] + sides[1] >sides[2] else 2
방법 3) sort안쓰고 풀기
ef solution(sides):
return 1 if max(sides) < (sum(sides) - max(sides)) else 2
3. 배열 자르기
https://school.programmers.co.kr/learn/courses/30/lessons/120833
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(numbers, num1, num2):
return numbers[num1:num2+1]
4. 피자 나눠 먹기(3)
https://school.programmers.co.kr/learn/courses/30/lessons/120816
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
import math
def solution(slice, n):
return math.ceil(n/slice)
이 문제의 핵심은 피자를 원하는 조각수로 잘라준다는 건데요
그래서 사람수 / 한판의 조각수 를 해주되 소수점 부분을 올림하면 무조건 1조각 이상은 먹을 수 있는거죠.
5. 점의 위치 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/120841
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
방법 1)
def solution(dot):
if dot[0] > 0 and dot[1] > 0: # 둘다 양수인 경우
return 1
elif dot[0] < 0 and dot[1] > 0: # x좌표만 음수인 경우
return 2
elif dot[0] < 0 and dot[1] < 0: # 둘다 음수인 경우
return 3
else:
return 4
방법 2)
def solution(dot):
x,y = dot
if x*y>0:
return 1 if x>0 else 3
else:
return 4 if x>0 else 2
6. 배열의 유사도
https://school.programmers.co.kr/learn/courses/30/lessons/120903
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
POINT!
두 배열에서 같은 원소가 몇개인지 세기
방법 1) 사용함수: for문 + in
def solution(s1, s2):
count = 0
for i in s1:
if i in s2:
count +=1
return count
방법 2) set() : 파이썬에서 중복 없는 데이터 모음을 표현하는 자료
def solution(s1, s2):
return len(set(s1) & set(s2))
set 교집합
1. set(집합) 이란?
- 파이썬에서 중복 없는 데이터 모음을 표현하는 자료형
- 수학의 집합 개념과 똑같이 동작함
- {}로 만들거나 set() 함수로 변환
a = {1, 2, 3}
b = set([2, 3, 4])
print(a) # {1, 2, 3}
print(b) # {2, 3, 4}
2. 교집합(intersection)
- 두 집합에 공통으로 들어있는 원소만 모은 집합
- 수학에서 ∩ 기호로 표시
- 파이썬에서는 & 연산자 또는 .intersection() 메서드 사용
a = {1, 2, 3}
b = {2, 3, 4}
print(a & b) # {2, 3}
print(a.intersection(b)) # {2, 3}
7. 순서 쌍의 개수
https://school.programmers.co.kr/learn/courses/30/lessons/120836
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
POINT!
n의 약수 개수 = 순서쌍 개수
순서쌍:(a,b)는 숫자 2개를 순서 있게 묶은 것
예: (2,6)와 (6, 2)는 순서가 다르기 때문에 다른 쌍으로 봅니다.
문제에서 두 숫자의 곱이 n인 순서쌍이라함은
순서쌍에 들어갈 a,b는 n의 약수가 되어야한다는 의미로 해석이 됩니다.
방법 1)
def solution(n):
count = 0
for a in range (1, n+1):
if n % a == 0:
count +=1
return count
방법 2) 제곱근 방식 : 속도 줄이기
def solution(n):
answer = 0
for i in range(1, int(n ** 0.5) + 1):
if n % i == 0:
answer += 2
if i * i == n:
answer -= 1
return answer
- 제곱근 방식 설명
🔍 코드 해석
for i in range(1, int(n ** 0.5) + 1):
- n ** 0.5 → √n (제곱근)
- int(...) + 1 → √n까지 포함해서 반복
if n % i == 0:
- i가 n의 약수이면 (i, n//i)라는 순서쌍이 나옴
answer += 2
- i가 약수면 (i, n//i)와 (n//i, i) 두 개 순서쌍 추가
if i * i == n: answer -= 1
- a = b인 경우(제곱수)에는 중복으로 세었으니까 하나 빼기
예: n=9 → (3,3)을 2개로 세면 안 되고 1개만
🧪 예시 — n=8
- i=1 → 약수 → +2 (1,8),(8,1) → answer=2
- i=2 → 약수 → +2 (2,4),(4,2) → answer=4
- i=3 → 3×3=9 > 8 → 종료
→ 총 4개
- n을 int(n**0.5)로 표현하는 이유
- √n 방식을 쓰는 경우 : 약수 찾기, 소수 판별, 순서쌍 세기
📌사용 이유:
- range(1, n+1)로 돌리면 당연히 동작합니다. 하지만 그렇게 하면 불필요하게 많은 반복을 하게 됩니다
- int(n ** 0.5) + 1을 쓰는 이유는 속도를 줄이기 위해서입니다
📌 왜 √n까지만 확인해도 되나?
- a × b = n이면
a ≤ √n일 때 b ≥ √n,
a ≥ √n일 때 b ≤ √n - 즉, 절반까지만 보면 나머지 절반은 자동으로 짝이 맞춰짐
예: n = 36
1 × 36
2 × 18
3 × 12
4 × 9
6 × 6
(여기서부터는 앞에서 이미 찾은 쌍이 반복됨)
'코딩 테스트 > 01. Python' 카테고리의 다른 글
| [프로그래머스]코딩테스트 Lv0 (3) (2) | 2025.08.11 |
|---|---|
| [프로그래머스] 코딩테스트 Lv0 (1) (4) | 2025.08.08 |