완주하지못한선수 / k번째 수
Javascript로 두 문제를 풀어보았습니다. 관련해서 Javascript 문법이나 특이점을 정리해보고자 합니다.
1) 완주하지못한선수
HashMap을 사용해서 해결할 수 있는 문제였는데 Javascript에서 HashMap을 정의할 때 아래와 같이 사용합니다.
HashMap에 데이터를 삽입한 후 for loop으로 데이터를 조회할 때에는 아래와 같이 사용합니다.
이 문제에서는 특별한 로직이 필요없습니다. 여러 풀이법이 있겠지만 HashMap을 이용하면 쉽게 접근할 수 있습니다.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
function solution(participant, completion) {
var answer = '';
var myMap = new Map()
for(let i=0; i<participant.length; i++){
if(myMap.get(participant[i])==undefined){
myMap.set(participant[i],1)
}
else{
myMap.set(participant[i], myMap.get(participant[i])+1)
}
}
for (let [key, value] of myMap) {
console.log(key+" => "+value)
}
for(let i=0; i<completion.length; i++){
if(myMap.get(completion[i])!=0)
myMap.set(completion[i], myMap.get(completion[i])-1)
}
for (let [key, value] of myMap) {
if(value!=0)
return key
}
return answer;
}
|
cs |
2) K번째 수
k번째 수도 특별한 로직이 요구되는 문제는 아닙니다. 이 문제에서 배운 것은 Javascript 정렬이 default로 문자를 기준으로 정렬하기 때문에 주의해야 합니다. (UTF-16 Code 기준으로 정렬합니다.)
또, sort 함수는 원본을 변경하기 때문에 주의해야합니다. 새로 array list를 생성해서 정렬 값을 관리해야 합니다.
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
function solution(array, commands) {
var answer = [];
for(let i=0; i<commands.length; i++){
let start = commands[i][0]-1
let end = commands[i][1]-1
let length = commands[i][2]-1
let tarray = []
for(let j=start; j<end+1; j++)
tarray.push(array[j])
tarray=tarray.sort((a,b)=>a-b)
answer.push(tarray[length])
}
console.log(answer)
return answer;
}
|
cs |
특히, array 정렬할 때는 function을 만들어서 적용할 수도 있지만 바로 적용할 수 있는 방법이 있습니다.
조금 복잡한 정렬에서는 아래와 같이 사용할 수 있습니다.
'알고리즘' 카테고리의 다른 글
프로그래머스 짝지어 제거하기 (0) | 2021.05.20 |
---|---|
프로그래머스 2개 이하로 다른 비트 (0) | 2021.05.20 |
알고리즘 :: 신규 아이디 추천 (javascript) (0) | 2021.05.07 |
BOJ 1619, 최소비용구하기 (0) | 2020.11.08 |
숨바꼭질4 (0) | 2020.11.07 |
댓글
이 글 공유하기
다른 글
-
프로그래머스 짝지어 제거하기
프로그래머스 짝지어 제거하기
2021.05.20 -
프로그래머스 2개 이하로 다른 비트
프로그래머스 2개 이하로 다른 비트
2021.05.20 -
알고리즘 :: 신규 아이디 추천 (javascript)
알고리즘 :: 신규 아이디 추천 (javascript)
2021.05.07 -
BOJ 1619, 최소비용구하기
BOJ 1619, 최소비용구하기
2020.11.08