TIL
99클럽 3일차 TIL (240724)
wnwlals13
2024. 7. 24. 13:16
오늘의 문제 : 문자열 내 마음대로 정렬하기
걸린 시간 : 24분
권장 시간 : 30분
오늘의 회고
- 문자열 정렬을 한번 더 생각해볼 수 있었던 문제였다. sort() 메서드에 대해서 알고 있었으나 기준이 2개에 대해 정렬하는 것이 약간 헷갈렸다. 문제의 조건은 아래와 같다.
- n번째 인덱스를 기준으로 정렬
- n번째 인덱스가 같은 경우에는 사전순으로 정렬
- 2개의 조건을 처리하기 위해 javascript에서는 조건 삼항 연산자를, python에서는 lambda를 활용했다.
- 문제를 자세히 읽어보는 습관을 들이자
문제 풀이
1. javascript
function solution(strings, n) {
var answer = strings.sort((a,b)=> a[n] !== b[n] ? a[n] < b[n] ? -1 : 1 : a < b ? -1 : 1 );
return answer;
}
2. python
def solution(strings, n):
answer = sorted(strings, key=lambda x : (x[n], x))
return answer
챌린저문제 : 숫자 문자열과 영단어
걸린 시간 : 55분
권장 시간 : 60분
문제 회고
- 머리속으로 이해는 되었으나 어떻게 구현해야 하는 거지? 고민했다. 우선 주어지는 s 문자열을 빙글뱅글 돌면서 해당하는 문자열을 숫자로 바꿔야겠다는 것은 캐리할 수 있었다. 하지만 역시나.. 어떻게 이를 구현하는지는 여러 시도 끝에 알 수 있었다.
- 우선 숫자를 영단어로 판별하는 것이 필요하기 때문에 alphabets를 설정했다. 그래서 alphabets 배열을 확인하며 요소가 s에 포함되어 있다면, 해당 영단어를 숫자로 replace 해주었다.
1. javascript
function solution(s) {
var answer = "";
let alphabets = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"];
alphabets.forEach((v,i) => {
while (s.indexOf(v) > -1) {
s = s.replace(v, i)
}
})
return Number(s);
}
2. python
def solution(s):
alphabets = ["zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine"]
for idx in range(len(alphabets)) :
while(s.find(alphabets[idx]) > -1) :
s = s.replace(alphabets[idx], str(idx))
return int(s)
느낀점
- 구현 부분이 많이 약하다는 것을 알 수 있었다. 구현 능력을 키워야 한다!