코테로 배워보는 파이썬 : 코드카타 24~27번
코딩테스트 연습 | 프로그래머스 스쿨
개발자 취업의 필수 관문 코딩테스트를 철저하게 연습하고 대비할 수 있는 문제를 총망라! 프로그래머스에서 선발한 문제로 유형을 파악하고 실력을 업그레이드해 보세요!
school.programmers.co.kr
코테 문제 풀어보고 응용 문제 생각나는거 직접 풀어보기!
- 서울에서 김서방 찾기
String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.- 컴퓨팅 사고
- .index() 메소드 사용해서 'Kim' 인덱스 위치 반환
- my_answer (⭕)
def solution(seoul):
return f'김서방은 {seoul.index("Kim")}에 있다'
- 컴퓨팅 사고
- 나누어 떨어지는 숫자 배열
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.- 컴퓨팅 사고
- arr%divisor==0 인 조건을 사용
- .sort()로 오름차순 정렬
- count 같이 써서 if 조건에서 count가 계속 0 이면 answer를 -1로 반환
- my_answer (⭕)
def solution(arr, divisor):
answer = []
count = 0
for i in arr:
if i%divisor == 0:
answer.append(i)
answer.sort()
count += 1
if count == 0: # 이 조건이 for 문 내에 있으면 안나누어지는 값 하나만 나와도 -1 반환 가능성
answer = [-1]
return answer - 다른 사람 풀이
def solution(arr, divisor):
return sorted([n for n in arr if n%divisor == 0]) or [-1] # 리스트 컴프리헨션과 or 사용으로 축약- 핵심은 빈 리스트 [ ] 는 무조건 False라는 것 → or 조건이 발동
- 컴퓨팅 사고
- 음양 더하기
어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 return 하도록 solution 함수를 완성해주세요.
- 컴퓨팅 사고
- 양수의 정수 부분끼리 더하고 음수의 정수 부분끼리 더한 뒤 양수의 정수 부분에서 음수의 정수 부분을 빼기
- my_answer (🔺)
def solution(absolutes, signs):
p,m=0,0
for i in range(len(absolutes)):
if signs[i]==True:
p+=absolutes[i]
else:
m+=absolutes[i]
return p-m- 리스트에서 동일한 위치에 있는 값들을 지정해야함
→ 처음에는 딕셔너리에 각각을 저장하려 했지만 복잡해짐
→ 이후 위와 같이 i 로 인덱싱해서 동일한 인덱스 위치에 해당하는 값들끼리 같이 계산되도록 했음
- 리스트에서 동일한 위치에 있는 값들을 지정해야함
- 다른 사람 풀이
def solution(absolutes, signs):
answer=0
for absolute,sign in zip(absolutes,signs):
if sign:
answer+=absolute
else:
answer-=absolute
return answer
- zip() 함수 : iterable 객체를 인자로 받아 동일 인덱스 위치 요소들을 튜플로 묶어서 반환
- 굳이 각각 더하지말고 -= 하면 된다. # 안되는줄...
- 한 줄 숏코딩도 가능하긴 하다.
def solution(absolutes, signs):
return sum(absolutes if sign else -absolutes for absolutes, sign in zip(absolutes, signs))
- 컴퓨팅 사고
- 핸드폰 번호 가리기
프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다.
전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요.
- 컴퓨팅 사고
- 전화번호는 길이가 일정하지 않다 → 하지만 뒤에서 4자리는 항상 고정
- 뒷 4자리를 제외한 부분을 [:-4]로 슬라이싱해서 그 부분만 값을 변경
list(map())으로 쪼개고 다시 join 해야하나..?
- my_answer (🔺)
def solution(phone_number):
return len(phone_number[:-4])*'*' + phone_number[-4:]
- 뒷자리를 제외한 폰번호 길이만큼 *을 곱하고 나머지 뒷 4자리 더하면 되는 것
- 컴퓨팅 사고
'TIL > Python' 카테고리의 다른 글
| 코테로 파이썬 공부하기 Ⅷ (0) | 2026.06.01 |
|---|---|
| 코테로 파이썬 공부하기 Ⅵ (0) | 2026.05.28 |
| 코테로 파이썬 공부하기 Ⅲ (0) | 2026.05.25 |
| 코테로 파이썬 공부하기 Ⅱ (0) | 2026.05.22 |
| 코테로 파이썬 공부하기 Ⅰ (0) | 2026.05.20 |