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

jang·2026년 3월 9일

프로그래머스 입문

목록 보기
6/12

문제 1) 점의 위치 구하기

[문제]

x 좌표 (x, y)를 차례대로 담은 정수 배열 dot이 매개변수로 주어집니다. 좌표 dot이 사분면 중 어디에 속하는지 1, 2, 3, 4 중 하나를 return 하도록 solution 함수를 완성해주세요.

1. 내 정답

def solution(dot): x,y = dot[0],dot[1] if x > 0 and y > 0: return 1 elif x < 0 and y >0: return 2 elif x < 0 and y <0: return 3 else: return 4

✨ 마무리

이제 이 정도 문제는 금방 풀 수 있다!

과연 실력이 늘까 걱정이었는데, 조금은 성장한 것 같아서 기분이 좋아지는 문제였다.

このくらいの問題は、もうすぐに解けるようになった!
本当に実力が伸びるのか少し心配だったけど、少しは成長している気がして、嬉しくなった問題だった。


문제 2) 2차원으로 만들기

[문제]

정수 배열 num_list와 정수 n이 매개변수로 주어집니다. num_list를 다음 설명과 같이 2차원 배열로 바꿔 return하도록 solution 함수를 완성해주세요.

1. 내 정답

def solution(num_list, n): answer = []

`for i in range(0,len(num_list),n):
    answer.append(num_list[i:i+n])

return answer`

2. 풀이

  • range(0, len(num_list), n): 0부터 num_list 길이까지 n씩 증가하면서 반복
  • num_list[i:i+n]: 리스트 슬라이싱 (리스트 [ 시작 : 끝 ] )

3. 파이썬 개념 정리 - 2차원 배열

2차원 배열이라는 말은 그대로 행과 열의 구조를 가진 배열 ⇒ 표나 엑셀 같은 형태의 데이터 구조

파이썬에서는 보통 리스트 안에 리스트를 넣어서 2차원 배열을 만든다.

  • 가장 많이 쓰는 패턴

for row in arr:

for num in row:

print(num)

또는

for i in range(len(arr)):

for j in range (len(arr[i])):

print (arr[i][j])

✨ 마무리

2차원 배열이라는 말이 어렵게 다가와서 당황했지만!

행과 열로 이루어진 표와 같다는 말에 쉽게 이해가 된 것 같다.

最初は「二次元配列」という言葉だけを見ると少し難しく感じて、正直少し戸惑いました。
ですが、「行」と「列」で構成された表のようなものだと理解してからは、イメージが一気に掴みやすくなりました。

実際に考えてみると、エクセルの表やマス目のような構造なので、思っていたよりもシンプルな概念だと感じました。


문제 3) 공 던지기

[문제]

머쓱이는 친구들과 동그랗게 서서 공 던지기 게임을 하고 있습니다. 공은 1번부터 던지며 오른쪽으로 한 명을 건너뛰고 그다음 사람에게만 던질 수 있습니다. 친구들의 번호가 들어있는 정수 배열 numbers와 정수 K가 주어질 때, k번째로 공을 던지는 사람의 번호는 무엇인지 return 하도록 solution 함수를 완성해보세요.

1. 내 정답

def solution(numbers, k): return numbers[(2 * (k-1))%len(numbers)]

2. 풀이

  • (2 * (k-1) : 첫 번쨰 던지는 사람은 numbers[0]으로 정해져 있기 때문에 첫번째 던지는 횟수를 빼주고 2씩 떨어지니까 곱해준다.
  • % len (numbers) : 나머지 연산자로 numbers 리스트의 길이만큼 나누어 나머지로 값을 구한다.

✨ 마무리

수학적 사고방식이 덜 켜졌는지 어떤 식으로 풀어야할 지는 알았지만 어떻게 표현 해야하는지 감이 안 잡혔다.

수학적 사고방식과 프로그래밍적 사고방식을 키우는데 집중해야겠다.

解き方の方向性自体はなんとなく分かっていたのですが、
それをどのようにコードとして表現すればいいのかがうまく思い浮かびませんでした。

まだ数学的な思考が十分に身についていないと感じたので、
これからは数学的思考とプログラミング的思考の両方を意識して鍛えていきたいと思います。


문제 4) 배열 회전시키기

1. 내 정답

def solution(numbers, direction): return [numbers[-1]] + numbers[:-1] if direction == "right" else numbers[1:] + [numbers[0]]

2. 풀이

  1. 오른쪽 회전

    [1,2,3]→[3,1,2]

    • 마지막 원소를 앞으로
    • 나머지는 뒤에 붙임

    ⇒ 슬라이싱 활용

    numbers = [1,2,3,4]

    [number[-1]] + numbers [ :-1]

    [4] + [1,2,3]

    • [number[-1]]: 뒤에서 첫 번째, 같은 타입끼리 이을 수 있기 때문에 리스트를 씌워야한다.
    • [number[ : -1]: 처음부터 마지막 전까지 잘라서 가져오기
  2. 왼쪽 회전

    [1,2,3] → [2,3,1]

    • 첫 번째 원소를 뒤로
    • 나머지를 앞에 붙임

numbers = [1,2,3,4]

numbers =[ 1 : ] + [numbers [0]]

[2,3,4] + [1]

✨ 마무리

슬라이싱을 이런 식으로도 활용할 수 있다는 걸 알 수 있는 문제였다.

뭔가 단순하지만 이걸 활용해서 구현할 수 있는 것들이 많을 것 같은 느낌이다.

スライシングはこういう形でも活用できるのだと気づかされた問題でした。
一見とてもシンプルですが、こうした考え方を使えば実装できることが思った以上に多そうだと感じました。

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

0개의 댓글