반응형
프로그래머스 LV1 > 연습문제 > 문자열 내 마음대로 정렬하기
문제 : https://school.programmers.co.kr/learn/courses/30/lessons/12915
[문제해결]
1. sort() 메서드로 정렬하면 되겠구나.
2. 비교할 대상이 같을때는 따로 반복돌아서 확인하면 되겠구나.
** 비교할 대상이 같을때는 반복 돌 필요 없이, 그냥 단어 통째로 비교하는게 좋다.
의식의 흐름대로 작성한 코드
function solution(strings, n) {
strings.sort((a,b) =>{
if(a[n] < b[n]){
return -1
}else if(a[n] > b[n]){
return 1
}else{
for(let i=0; i<a.length; i++){
console.log(a, b)
if(a[i] == b[i]) continue;
if(a[i] < b[i]){
console.log(a[i], b[i])
return -1
break;
} else if (a[i] > b[i]){
// console.log(a[i], b[i])
return 1
break;
} else return -1
}
}
})
return strings
}
for문 도는게 누가봐도 비효율적이라 문제를 다시한번 읽고 생각이라는걸 해보니.. 굳이 돌면서 확인할필요가 없겠다.
사전순이니 그냥 단순비교하자.
function solution(strings, n) {
console.log(strings);
strings.sort((a,b) =>{
if(a[n] == b[n]){
return a < b ? -1 : 1
}
return a[n] < b[n] ? -1 : 1
})
return strings
}
생각이라는걸 한번만 더 하자.
반응형
'[IT] 프로덕트 개발 > Coding Test - 코딩테스트' 카테고리의 다른 글
[LV0] 숨어있는 숫자의 덧셈(2) (0) | 2022.11.23 |
---|---|
[LV1] 체육복 (0) | 2022.11.23 |
[LV1] 기사단원의 무기 (0) | 2022.11.21 |
[LV1] 옹알이2 / while() (0) | 2022.11.15 |
[LV1] 콜라 문제 / 수학적 계산이 전부인 while() (0) | 2022.11.15 |