Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 27 | 28 |
29 | 30 |
Tags
- 파이썬
- multer-s3
- lightsailor
- 알고리즘
- Local Search
- 철학
- typescript
- node.js
- 문자열
- CS
- 문자열처리
- 컴퓨터공학
- Hill Climbing
- Search Algorithm
- node배포
- Simulated Annealing
- computerscience
- 컴퓨터과학
- AWS
- 배포
- 코드
Archives
- Today
- Total
지식의모듈화
[!][Level2][Javascript] 조이스틱 본문
function solution(name) {
var answer = 0;
let char_list= name.split("");
char_list.forEach((e,i)=>{
// console.log(e);
answer+=Math.min(e.charCodeAt(0)-'A'.charCodeAt(0), 1+'Z'.charCodeAt(0)-e.charCodeAt(0));
})
char_list[0]='A';
let indices=new Array(char_list.length).fill(1);
char_list.forEach((e,i)=>{
if(e!=='A'){
indices[i]=0;
}
})
// console.log(indices);
let move=0;
let current=0;
let places=[];
for(let i=0; i<indices.length;i++){
if (indices[i]!==1) places.push(i);
}
while(places.length){
// console.log(places);
let is=0;
let next=places[0];
let min=Math.min( Math.abs(places[0]-current), Math.abs(indices.length-1-places[0]+1+current), Math.abs(indices.length-current+places[0]));
places.forEach((e,i)=>{
let small= Math.min(Math.abs(e-current), Math.abs(indices.length-1-e+1+current),Math.abs(indices.length-current+e))
if( small< min ){
min= small;
next=e;
is=i;
}
});
places.splice(is,1);
console.log("MIN is ",min,"NEXT is ",next)
move+=min;
current=next;
indices[current]=1;
}
answer+= move;
return answer;
}
77점짜리 풀이인데, Greedy 기법이라고 되어 있어서 greedy로 구현했는데 틀린다고 주장한다..자세히 생각해보면 엄밀하게는 그리디가 아니다..
'PS > 프로그래머스' 카테고리의 다른 글
[Level2][Javascript] 타겟 넘버 (0) | 2022.06.27 |
---|---|
[Level3][Javascript] 입국 심사 (0) | 2022.06.27 |
[Level2][Javascript ][단속카메라] (0) | 2022.06.26 |
[Level2][Javascript] N으로 표현 (0) | 2022.06.25 |
[Level2][Javascript] 이중우선순위큐 (0) | 2022.06.25 |