코딩테스트 입문 Day 8 배열, 구현, 수학

  • 배열 자르기
  • 외계행성의 나이
  • 진료순서 정하기
  • 순서쌍의 개수

1. 배열 자르기

정수 배열 numbers와 정수 num1, num2가 매개변수로 주어질 때, numbersnum1번 째 인덱스부터 num2번째 인덱스까지 자른 정수 배열을 return 하도록 solution 함수를 완성해보세요.
👉 문제 보러가기

(1) 코드 작성

def solution(numbers, num1, num2):
    return numbers[num1:num2+1]

(2) 코드 리뷰 및 회고

  • 리스트 내 요소들을 슬라이싱으로 가져올 때, 리스트[x:y]에서 x는 시작 인덱스, y는 종료 인덱스이다.
  • 주의할 점은 y를 3으로 설정 시, 리스트 내 인덱스 3 위치에 있는 요소 이전 까지만 슬라이싱 된다는 점이다.
인덱스 값 이해하기 (PowerPoint로 제작)
  • [:] 슬라이싱 기호를 사용할 때, [start:end:step] 임을 알자
  • 슬라이싱 기호를 사용할 때, 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개
  • EASY 😎


👩🏻‍💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.

댓글남기기