[코딩테스트]입문 - Day.08

jang·2026년 2월 28일

프로그래머스 입문

목록 보기
4/12

문제 1 ) 배열 자르기

[문제]

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

1. 나의 정답

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

[slice]

list [ start : stop : step ]

  • start : 시작 인덱스 (포함)
  • stop : 끝 인덱스 (미포함)
  • step : 간격 (기본 1)
    1. 일부 자르기 a = [ 1 , 4 ]
    2. 처음부터 a = [ : 3 ]
    3. 끝까지 a = [ 2 : ]
    4. 전체 복사 a = [ : ]
    5. 2칸씩 a = [ : : 2 ]
    6. 뒤집기 a = [ : : -1 ]
    7. 뒤에서 자르기 a = -2 : ] , a = [ : -1]

✨ 마무리

슬라이스는 기존에 알고 있던 문법이지만, 더 자세하게 공부할 수 있는 기회가 되어서 좋은 것 같다.

슬라이스의 다양한 활용 방법에 대해서 잊지 않고 잘 활용할 수 있도록 해야겠다.

スライスの文法はもともと知っていましたが、
より詳しく学ぶ良い機会になったと感じます。

今後もスライスのさまざまな活用方法を忘れずに、しっかり使いこなせるようにしていきたいです。


문제 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): table = "abcdefghij" # 알파벳을 숫자로 변경 return ''.join(table[int(ch)]for ch in str(age))

#str(age): string age로 age를 문자로 변환 , 숫자는 하나씩 꺼내오는게 어렵기 때문 #for ch in str(age): age의 문자를 하나씩 꺼내기 ex) "23" 처음 ch = "2", 다음엔 ch = "3" #int(ch): ch에 들어있는 문자를 숫자(정수)로 변경 #table[int(ch)]: table에서 int(ch) 꺼내오기 #''.join(...): 지금까지 나온 글자들을 붙여서 하나의 문자열로 만듦

✨ 마무리

문제를 이해하고 어떤 식으로 풀어내야 하는지는 알겠는데, 코딩식으로 표현을 어떻게 해야하는지가 어려웠다.

問題は理解できて、どう解くかも分かったが、それをプログラムで表現するのが難しかった。

이걸 잘 이해해서, 비슷한 상황에서 잘 활용할 수 있도록 잘 배워놔야겠다.

これをよく理解して、似たような問題でも活用できるようにしっかり学んでおきたい。


문제 3 ) 진료 순서 정하기

[문제]

외과의사 머쓱이는 응급실에 온 환자의 응급도를 기준으로 진료 순서를 정하려고 합니다. 정수 배열 emergency가 매개변수로 주어질 때 응급도가 높은 순서대로 진료 순서를 정한 배열을 return하도록 solution 함수를 완성해주세요.

1. 나의 정답

def solution(emergency): sorted_e = sorted(emergency, reverse = True) return [sorted_e.index(e) + 1 for e in emergency]

2. 정답 풀이

  1. sorted_e = sorted(emergency, reverse = True)
    • sorted(정렬할 것)
      • 기본 : 오름차순 (작은 → 큰), 내림차순(reversed = True, 큰 → 작은)
      • 절댓값 기준 정렬 : key = abs, 문자열 길이 기준 정렬: key = len
      • list.sort(): 리스트를 그 자리에서 정렬

⇒ emergency 리스트를 내림차순으로 정렬해서 sorted_e에 대입

b. return [sorted_e.index(e) + 1 for e in emergency]

  • sorted_e.index(e): sorted_e 리스트의 인덱스 번호 찾기
    • 리스트.index(찾을값): 찾을 값을 리스트 안에서 찾아내어 인덱스 번호를 찾기.
  • +1: 인덱스는 0부터 시작이니 각 인덱스에 1씩 더해주기

✨ 마무리

기록하는 방식을 조금 바꿔봤다.

記録の仕方を少し変えてみた。

좀 더 내가 생각해 나가는 과정과 왜 이런 코드를 썼는지 한 눈에 확인할 수 있어서 좀 더 용이한 것 같다.

もっと自分の思考過程や、なぜこのコードを書いたのかを一目で確認できるので、より良いと感じた。


문제 4) 순서쌍의 개수

[문제]

순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.

이는 n의 약수 개수 세기와 같다.

1. 나의 정답

def solution(n): count = 0 for a in range(1, n + 1): if n % a == 0: count += 1 return count

2. 정답 풀이

  1. count = 0
    • 순서쌍의 개수를 세기 위한 카운터, 한 마디로 값을 넣을 빈 통.
  2. for a in range (1, n + 1):
    • a를 1부터 n까지 하나씩 바꿔가며 확인
  3. if n % a == 0:
    • n을 a로 나눴을 때 나머지가 0인 값을 구하기 = 이는 a가 n의 약수라는 뜻
  4. count += 1
    • count 빈통에 더해서 저장한다

✨ 마무리

이 문제가 n의 약수 세기와 같다는 것은 새로운 시각이라 매우 흥미로웠다.

この問題が n の約数を数える問題と同じだという考え方は、とても興味深かった。

그 방법을 알고 나니 내가 아는 부분에서 해결할 수 있었다.

この方法を知ったから、自分が知っているで知識で解くことができた。

profile
비전공자가 AI 엔지니어가 되는 과정

0개의 댓글