[프로그래머스 Python] 코딩테스트 입문 Day 8 - 배열, 구현, 수학
코딩테스트 입문 Day 8 배열, 구현, 수학
- 배열 자르기
- 외계행성의 나이
- 진료순서 정하기
- 순서쌍의 개수
1. 배열 자르기
정수 배열 numbers
와 정수 num1
, num2
가 매개변수로 주어질 때, numbers
의 num1
번 째 인덱스부터 num2
번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요.
👉 문제 보러가기
(1) 코드 작성
def solution(numbers, num1, num2):
return numbers[num1:num2+1]
(2) 코드 리뷰 및 회고
- 리스트 내 요소들을 슬라이싱으로 가져올 때, 리스트[x:y]에서 x는 시작 인덱스, y는 종료 인덱스이다.
- 주의할 점은 y를 3으로 설정 시, 리스트 내 인덱스 3 위치에 있는 요소 이전 까지만 슬라이싱 된다는 점이다.
- [:] 슬라이싱 기호를 사용할 때, [startstep] 임을 알자
- 슬라이싱 기호를 사용할 때, end는 슬라이싱을 끝낼 위치로 end는 포함하지 않음을 알아두자 (‘오므라이’ = [10:14])
2. 외계행성의 나이
우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, …, j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age
가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.
👉 문제 보러가기
(1) 코드 작성
def solution(age):
alpha = 'abcdefghijklmnopqrstuvwxyz'
str_age = str(age)
answer = ""
# 알파벳 정보 불러오는 과정
for a in str_age:
answer += alpha[int(a)]
return answer
(2) 코드 리뷰 및 회고
- alpha 변수에 알파벳 소문자를 할당한다.
- 숫자형 age를 문자열로 변경 후 각 자리수를 불러오기 위해 for문을 사용했다.
- 위치 정보를 불러오고 그 위치 정보(인덱스 값)를 alpha에서 가져와 빈 문자열인 answer 에 추가한다.
- EASY 😎
3. 진료순서 정하기
외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency
가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.
👉 문제 보러가기
(1) 코드 작성
def solution(emergency):
ordered_e = sorted(emergency, reverse=True)
return [ordered_e.index(n)+1 for n in emergency]
(2) 코드 리뷰 및 회고
- 응급도의 기준을 진료 순서로 정한다.
- 진료 순서 값을 sorted 함수로 내림차순 정렬한다.(큰 값 -> 작은 값)
- 진료 순서 리스트(emergency)의 각 요소들을 정렬된 리스트에서의 인덱스 값을 찾고 1을 더해주었다.
- 1을 더해준 이유는 순서는 1부터 시작해야하기 때문에 0부터 시작되는 인덱스 값에 1을 더했다.
- EASY 😎
4. 순서쌍의 개수
순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n
이 매개변수로 주어질 때 두 숫자의 곱이 n
인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.
👉 문제 보러가기
(1) 코드 작성
def solution(n):
answer = 0
for num in range(1, n+1):
if n % num == 0:
answer += 1
return answer
(2) 코드 리뷰 및 회고
- 특정 숫자의 순서쌍을 구하는 문제이다.
- 즉, 1부터 자기 자신까지의 범위에서 곱으로 표현될 수 있는 조합을 찾는 것이다.
- for문을 이용해 1부터 n 값까지 나올 수 있도록 설정했다.
- 그리고 n이 num으로 나누어 떨어진다면(곱으로 표현가능) answer에 1을 더한다.
- 예를 들어, n이 6이라고 가정한다.
- range(1, 7) => [1, 2, 3, 4, 5, 6]
- 6 % 1 == 0 => (1, ?)로 순서쌍 가능
- 6 % 2 == 0 => (2, ?)로 순서쌍 가능
- 6 % 3 == 0 => (3, ?)로 순서쌍 가능
- 6 % 4 != 0 => (4, ?)로 순서쌍 불가능
- 6 % 5 != 0 => (5, ?)로 순서쌍 불가능
- 6 % 6 == 0 => (6, ?)로 순서쌍 가능
- 즉, (1, 6), (2, 3), (3, 2), (6, 1)로 조합 가능한 순서쌍은 총 4개
- 예를 들어, n이 6이라고 가정한다.
- EASY 😎
👩🏻💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.
댓글남기기