K번째 수
답:
더보기
def solution(array, commands):
answer = []
for c in commands:
i = c[0] - 1
j = c[1]
k = c[2] - 1
a = array[i:j]
answer.append(sorted(a)[k])
return answer
짧게 줄여보았음!
def solution(array, commands):
answer = []
for c in commands:
i, j, k = c
answer.append(sorted(array[i-1:j])[k-1])
return answer
문제 분석 및 해석
1. i번째 숫자부터 j번째 숫자까지 자르고
2. 정렬했을 때,
3. k번째에 있는 수 구하기
풀이생각
commands에서 각 요소를 꺼내어 범위 연산자에 i, j를 넣기
정렬 및 k번째 수 지정, return
숫자 문자열과 영단어
답:
더보기
리스트로 풀이
number = ["zero", "one", "two", "three","four","five","six","seven", "eight", "nine"]
def solution(s):
for num in number:
if num in s:
i = number.index(num)
s = s.replace(num, str(i))
return int(s)
딕셔너리로 풀이
word ={"zero": "0", "one" : "1", "two" :"2", "three" : "3", "four" :"4", "five" :"5", "six" : "6", "seven" : "7","eight" : "8","nine" : "9"}
def solution(s):
for i in word:
s = s.replace(i, word[i])
return int(s)
문제 분석 및 해석
- 1478 → "one4seveneight"
- 234567 → "23four5six7"
- 10203 → "1zerotwozero3"
숫자의 일부 자릿수가 영단어, 혹은 바뀌지 않고 그대로인 문자열 s
s를 원래 숫자로 바꾸어 int형태로 return하기
>> 풀이생각
리스트 / 딕셔너리 둘다로 풀 수 있을 것이라고 생각했다.
일단 리스트로 도전 후 딕셔너리로 풀이했음
이후 range()로도 풀이를 해보았는데, 오류 발생으로 일단 중단.
오류1.
range(10)으로 풀어보려고하는 과정에서
string에서 int를 찾으려고 해서 오류남
index = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
TypeError: 'in <string>' requires string as left operand, not int
index = ["0", "1", "2", "3", "4", "5", "6", "7", "8", “9”]
로 변경
# 실패
number = ["zero", "one", "two", "three","four","five","six","seven", "eight", "nine"]
index = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9"]
def solution(s):
answer = ""
for i in range(10): #0~9
if number[i] in s:
i_num = number.index(number[i])
answer += str(i_num)
if index[i] in s:
answer += index[i]
return int(answer)
테스트 케이스는 잘 통과하는데, 코드를 제출하면 1개 빼고 모두 실패한다
왤까🤨?
'알고리즘 풀이' 카테고리의 다른 글
[알고리즘] 프로그래머스 | 3진법 뒤집기, 푸드파이트대회, 예산 (0) | 2023.08.09 |
---|---|
[알고리즘] 프로그래머스 | 콜라츠 추측, 부족한 금액 계산하기, 최대공약수와 최소공배수 (0) | 2023.08.08 |
[알고리즘, 정보] int를 각 자리수로 나누어 list 만들기 (2) | 2023.08.05 |
[알고리즘] 프로그래머스 | 하샤드 수, 나누어 떨어지는 숫자 배열, 행렬의 덧셈 (0) | 2023.08.05 |
[알고리즘] 프로그래머스 | 문자열 다루기, 없는 숫자 더하기, x만큼 간격이 있는 n개의 숫자 (0) | 2023.08.04 |