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

jang·2026년 3월 17일

프로그래머스 입문

목록 보기
10/12

문제 1) 가까운 수

[문제]

정수 배열 array와 정수 n이 매개변수로 주어질 때, array에 들어있는 정수 중 n과 가장 가까운 수를 return 하도록 solution 함수를 완성해주세요.

1. 내 정답

def solution(array,n):
	array.sort()
	return min(array, key=lambda x: abs(x-n))

2. 풀이

  • array.sort(): 배열을 작은 숫자부터 정렬
  • return min(array, key = lambda x: abs(x-n)): array 안의 숫자들 중에서 n과의 거리가 가장 작은 값을 골라라는 뜻

문제 2) 369 게임

[문제]

머쓱이는 친구들과 369게임을 하고 있습니다. 369게임은 1부터 숫자를 하나씩 대며 3, 6, 9가 들어가는 숫자는 숫자 대신 3, 6, 9의 개수만큼 박수를 치는 게임입니다. 머쓱이가 말해야하는 숫자 order가 매개변수로 주어질 때, 머쓱이가 쳐야할 박수 횟수를 return 하도록 solution 함수를 완성해보세요.

1. 내 정답

def solution(order):
	count = 0
	for x in str(order):
		if x in "369":
			count += 1
		return count

2. 풀이

  • count = 0 : 박수 횟수를 더해줄 변수 생성
  • for x in str(order): order의 숫자덩어리를 하나하나 뜯어보기 위해 문자타입으로 변경하여 하나씩 대입
  • if x in “369”: 369 중 한 개라도 x에 들어있다면
  • count += 1: count에 1씩을 더해라

문제 3) 암호 해독

[문제]

군 전략가 머쓱이는 전쟁 중 적군이 다음과 같은 암호 체계를 사용한다는 것을 알아냈습니다.

  • 암호화된 문자열 cipher를 주고받습니다.
  • 그 문자열에서 code의 배수 번째 글자만 진짜 암호입니다.

문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 solution 함수를 완성해주세요.

1. 내 정답

def solution(cipher, code):
	result = [ ]
	for i in range(code, len(cipher) + 1, code):
		result.append(cipher[i-1])
	return ''.join(result)

2. 풀이

  • result = [ ]: 뽑은 글자들을 담아둘 빈 상자를 만들기
  • for i in range(code, len(cipher) + 1, code): code번째 부터 cipher의 길이만큼 code 간격으로 뽑아 i에 대입하겠다는 뜻
  • result.append (cipher [ i - 1 ]): 해당 인덱스 위치의 글자를 result에 넣겠다는 뜻, 인덱스는 0부터 시작하게 때문에 i에 -1을 해줘야 한다.
  • return ‘ ‘ . join (result): 리스트 안의 글자들을 하나의 문자열로 붙여서 돌려달라는 뜻

문제 4) 대문자와 소분자

[문제]

문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.

1. 내 정답

def solution(my_string):
    answer = []
    for x in my_string:
        if x in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
            answer.append(x.lower())
        else:
            answer.append(x.upper())
    return ''.join(answer)

2. 풀이

  • answer = [ ] : 변환한 문자를 넣기 위한 리스트 생성
  • for x in my_string: x에 my_string 원소들을 한 개씩 차례대로 대입
  • if x in “ABCDEFGHIJKLMNOPQRSTUVWXYZ”: x가 이 대문자 중에 있다면
  • answer.append(x.lower()): 소문자로 바꿔 answer에 추가
  • else: answer.append(x.upper()): 아니라면 대문자로 바꿔 리스트에 추가
  • return ‘ ‘ . join (answer): 하나의 문자열로 만들어 제출

✨ 마무리

머리가 멍청하면 손과 발이 고생한다는 것을 정확히 보여주는 문제가 4번이었다. 저걸 간단하게 나타내는 방법을 몰라 저렇게 무식한 방법으로 풀 수밖에 없었다는 것이 통탄스럽다. 그래도 풀었다는 것에 의의를 둬야할까 라는 긍정적인 사고회로를 돌려보려고 하지만 쉽지는 않다.

아직 한참 아래인 입문 문제를 풀고 있지만 뭔가 이 코딩테스트의 풀이? 에 익숙해지고 있다는 느낌을 받았다.

스스로 생각하는 사고능력을 기르는 것! 매일 거르지 않고 하는 것! 조금씩 성장하는 것!에 집중하여 좌절하지 않고 나아가자.

4番の問題では、より簡潔な表現方法をすぐに思いつけず、結果として遠回りな解き方になった。
しかし、その過程を通じて、自分にはまだ発想の引き出しや実装の慣れが不足していることを認識できた。
現在はまだ入門レベルの問題に取り組んでいるが、少しずつコーディングテストの考え方や解法のパターンに慣れてきていると感じている。
これからも、思考力を養うこと、毎日継続すること、そして一歩ずつ成長を積み重ねることを意識しながら、着実に取り組んでいきたい。

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

0개의 댓글