26-05-25
코테로 배워보는 파이썬
코딩테스트 연습 | 프로그래머스 스쿨
개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!
school.programmers.co.kr
코테 문제 풀어보고 응용 문제 생각나는거 직접 풀어보기!
- 배열 순서 반대로하기
정수가 들어 있는 배열 num_list가 매개변수로 주어집니다. num_list의 원소의 순서를 거꾸로 뒤집은 배열을 return하도록 solution 함수를 완성해주세요.- 컴퓨팅 사고 해보기
- 순서를 거꾸로 뒤집는다 → .reverse()
- my_answer (⭕)
def solution(num_list):
num_list.reverse()
answer=num_list
return answer - 다른 사람 풀이
def solution(num_list):
answer=num_list[::-1] #인덱싱의 step을 -1로 조절해서 가장 간단한 방법
return answer
- 컴퓨팅 사고 해보기
- 배열 두 배 만들기
정수 배열 numbers가 매개변수로 주어집니다. numbers의 각 원소에 두 배 한 원소를 가진 배열을 return하도록 solution 함수를 완성해주세요.- 컴퓨팅 사고 해보기
- 각 원소의 2배를 하기 위해 새로운 빈 리스트를 만든 뒤 numbers 원소를 하나씩 꺼내 2배한 뒤 append
- my_answer (⭕)
def solution(numbers):
answer=[]
for num in numbers:
num=num*2
answer.append(num)
return answer - 다른 사람 풀이
def solution(numbers):
return [num*2 for num in numbers] #리스트 컴프리헨션
- 컴퓨팅 사고 해보기
- 중앙값 구하기
중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.
- 컴퓨팅 사고 해보기
- 일단 array를 오름차순으로 정렬하고, 이후 전체 길이를 len으로 구한 뒤 절반 위치의 인덱스 값을 반환?
- my_answer (⭕)
def solution(array):
array.sort() #중앙값이란 리스트 중앙에 위치한 값이 아니라 크기 순으로 정렬했을 때 중앙에 위치한 값
answer=array[int((len(array)/2)-0.5)]
return answer - 다른 사람 풀이
def solution(array):
return sorted(array)[len(array)//2] #몫만 남기면 int 사용 안해도 정수형
- 컴퓨팅 사고 해보기
- 최빈값 구하기
최빈값은 주어진 값 중에서 가장 자주 나오는 값을 의미합니다. 정수 배열 array가 매개변수로 주어질 때, 최빈값을 return 하도록 solution 함수를 완성해보세요. 최빈값이 여러 개면 -1을 return 합니다.- 컴퓨팅 사고 해보기
- 최빈값 가장 자주 나오는 값 → 특정 값의 갯수(count())를 세어 max 값을 반환
- my_answer (❌) : GPT 힌트로 완성한 것..ㅠ
def solution(array):
count_dict={ }
for i in array:
count_dict[i]=array.count(i)
max_count=max(count_dict.values())
if list(count_dict.values()).count(max_count)>1:
answer=-1
else:
answer=max(count_dict, key=lambda x: count_dict[x])
return answer - GPT 첨삭
def solution(array):
count_dict = {}
max_count = 0
answer = -1
for i in array:
# 등장 횟수 저장
if i in count_dict:
count_dict[i] += 1
else:
count_dict[i] = 1
# 현재 숫자의 등장 횟수
current_count = count_dict[i]
# 더 큰 최빈값 발견
if current_count > max_count:
max_count = current_count
answer = i
# 같은 최빈값이 또 나온 경우
elif current_count == max_count and answer != i:
answer = -1
return answer
- i가 몇 번 나왔는지 저장하고, i의 현재 최빈값을 이전 max_count와 비교해서 더 크면 기존max_count와 교체, 같은 최빈값이 나왔다 그러면 -1 출력
- 다른 사람 풀이
def solution(array):
num = 0 #현재 최빈값
data = 0 #최빈값을 가지는 array 값
for i in set(array): #set을 통해 같은 i에 대한 여러번 반복 방지
if array.count(i) > num: #array의 i 수를 세서 num보다 크면
num = array.count(i) #그 값을 새로운 num으로 저장
data = i #최빈값을 가지는 값을 i로 변경
elif array.count(i) == num: #num과 같으면
data = -1 #data를 -1로 저장
return data
- 컴퓨팅 사고 해보기
- 짝수는 싫어요
정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.
- 컴퓨팅 사고
- 홀수 조건(i%2!=0)을 활용
- 오름차순 sort 써도 되지만 n 이하의 수를 range로 정의하면 자동으로 오름차순 정렬 가능
- 새로운 리스트에 append해서 저장
- my_answer (⭕)
def solution(n):
answer=[]
for i in range(n+1):
if i%2!=0:
answer.append(i)
return answer - 다른 사람 풀이
def solution(n):
return [i for i in range(1, n+1, 2)] #1부터 2씩 n까지 증가하는 배열도 동일한 결과
- list comprehension : 결과값 for 변수 in 조건
- 내 답을 리스트 컴프리헨션 한다면?
def solution(n):
return [i for i in range(n+1) if i%2!=0] - 추가로 생각해보기
def solution(n):
return [i for i in range(n+1) if i%2]
→ 이것도 동일한 결과가 나온다. 왜 그럴까?
파이썬에서 0은 False, 그 외값은 True로 취급하기 때문
즉 각각 홀수, 짝수일 때 i%2가 1, 0이고 이는 True, False이기 때문에
홀수만 True로 취급되어 홀수만 [ ]에 저장되는 것
- 컴퓨팅 사고
'TIL > Python' 카테고리의 다른 글
| 코테로 파이썬 공부하기 Ⅷ (0) | 2026.06.01 |
|---|---|
| 코테로 파이썬 공부하기 Ⅶ (0) | 2026.05.29 |
| 코테로 파이썬 공부하기 Ⅵ (0) | 2026.05.28 |
| 코테로 파이썬 공부하기 Ⅱ (0) | 2026.05.22 |
| 코테로 파이썬 공부하기 Ⅰ (0) | 2026.05.20 |