티스토리 뷰
알고리즘/HackerRank
[HackerRank] Arrays - (Medium)New Year Chaos (롤러코스터 자리 이동) javascript 문제 풀이
miiingo 2021. 6. 22. 17:07반응형
■ 문제
난이도: Medium
최대 스코어: 40
● 문제 요약
- 새해 첫 날 사람들은 롤러코스터를 타기 위해 줄을 서 있는 상태
- 사람들은 모두 1부터 n까지의 queue에서 자신의 초기 위치를 나타내는 스티커를 붙이고 있음
- 바로 앞 사람에게 뇌물을 주고 자리를 바꿀 순 있지만 자신의 초기 위치 스티커는 변하지 않음
- 한 사람당 최대 두 명에게 뇌물을 줄 수 있음
- 주어진 q(queue) 순서가 되기 위한 최소 뇌물 수를 return
- 두 명 이상 뇌물을 받은 사람이 있는 경우 'Too chaotic'을 return
예시:
q = [1, 2, 3, 5, 4, 6, 7, 8]
- 5와 4만 서로 자리를 바꾸면 됨
==> return 1
q = [4, 1, 2, 3]
- 4가 맨 뒤로 가야하는데, 그러려면 1, 2, 3 세 명에게 뇌물을 주어야 함
==> return 'Too chaotic'
■ 문제 풀이
배열 a를 거꾸로 순회하며 초기 위치와 얼마나 차이나는지 비교한다.
만약, 현재 위치가 초기 위치보다 3 이상 차이나면 뇌물을 세 번 이상 준 것이기 때문에 'Too chaotic'을 return한다.
그리고 현재 위치와 초기 위치가 다를 때에는 자리를 바꿔 원래 위치를 찾아가도록 하고 카운트를 추가해준다.
● 완성 코드 - 40 Points (Max)
'use strict';
process.stdin.resume();
process.stdin.setEncoding('utf-8');
let inputString = '';
let currentLine = 0;
process.stdin.on('data', inputStdin => {
inputString += inputStdin;
});
process.stdin.on('end', _ => {
inputString = inputString.replace(/\s*$/, '')
.split('\n')
.map(str => str.replace(/\s*$/, ''));
main();
});
function readLine() {
return inputString[currentLine++];
}
// Complete the minimumBribes function below.
function minimumBribes(q) {
let cnt = 0;
for(let i=q.length; i>0; i--){
if(q[i-1] > i+2){
console.log('Too chaotic');
return;
}
if(q[i-1] != i){
if(q[i-2] == i){
[q[i-2], q[i-1]] = [q[i-1], q[i-2]];
cnt++;
}
else if(q[i-3] == i){
[q[i-3], q[i-2], q[i-1]] = [q[i-2], q[i-1], q[i-3]];
cnt += 2;
}
}
}
console.log(cnt);
return;
}
function main() {
const t = parseInt(readLine(), 10);
for (let tItr = 0; tItr < t; tItr++) {
const n = parseInt(readLine(), 10);
const q = readLine().split(' ').map(qTemp => parseInt(qTemp, 10));
minimumBribes(q);
}
}
반응형
'알고리즘 > HackerRank' 카테고리의 다른 글
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 어서와 데이터는 처음이지
- 빅데이터 기초
- 하이퍼레저 패브릭
- Blockchain
- 블록 체인
- codility
- 직딩잇템
- 블록체인
- ubuntu
- 코테
- 빅데이터
- 빅데이터 교육
- 문제풀이
- Hyperledger Fabric v1.1
- Hyperledger Indy
- DOCs
- javascript
- 기초 of 기초 데이터 개념
- 암브로셔스
- Hyperledger Fabric
- 알고리즘
- 코딜리티
- ambrosus
- 하이퍼레저 페브릭
- Private Data
- Hyperledger Fabric v1.2
- 빅데이터 강의
- 코딩테스트
- docker
- 하이퍼레저 인디
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
글 보관함