티스토리 뷰
알고리즘/HackerRank
[HackerRank] String Manipulation - (Easy)Alternating Characters (문자열 압축) javascript 문제 풀이
miiingo 2021. 6. 24. 09:00반응형
■ 문제
난이도: Easy
최대 스코어: 20
● 문제 요약
- 문자 'A' 또는 'B'로만 구성된 문자열 S 제공
- 동일한 문자가 연속되서 나오지 않도록 문자열 변경 필요
- 삭제해야하는 최소 문자 수 return
예시:
s = AABAAB
- 1번 째에 위치한 'A' 제거 --> s = ABAAB
- 4번 째에 위치한 'A' 제거 --> s = ABAB
==> return 2
■ 문제 풀이
이 문제는 문자열이 'A' 또는 'B'로만 구성되어 있어서 쉽게 해결했다.
우선 편하게 풀기 위해 문자열 S를 array로 변경했다.
그런 다음 pre 라는 변수에 이전 문자를 저장해놓고, 배열 전체를 돌며 현재 문자가 이전 문자와 같으면 ++,
이전 문자와 같지 않으면 이전 문자를 현재 문자로 바꾸고 넘어간다.
reduce를 활용해서 제거해야하는 문자의 수를 카운트하고 바로 return 했다.
● 완성 코드 - 20 Points (Max)
'use strict';
const fs = require('fs');
process.stdin.resume();
process.stdin.setEncoding('utf-8');
let inputString = '';
let currentLine = 0;
process.stdin.on('data', function(inputStdin) {
inputString += inputStdin;
});
process.stdin.on('end', function() {
inputString = inputString.split('\n');
main();
});
function readLine() {
return inputString[currentLine++];
}
/*
* Complete the 'alternatingCharacters' function below.
*
* The function is expected to return an INTEGER.
* The function accepts STRING s as parameter.
*/
function alternatingCharacters(s) {
// Write your code here
const arrayS = s.split('');
let pre = '';
return arrayS.reduce((acc, cur, idx) => {
if(arrayS[idx] === pre){
acc++;
}
else{
pre = arrayS[idx];
}
return acc;
}, 0)
}
function main() {
const ws = fs.createWriteStream(process.env.OUTPUT_PATH);
const q = parseInt(readLine().trim(), 10);
for (let qItr = 0; qItr < q; qItr++) {
const s = readLine();
const result = alternatingCharacters(s);
ws.write(result + '\n');
}
ws.end();
}
반응형
'알고리즘 > HackerRank' 카테고리의 다른 글
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 코테
- 알고리즘
- docker
- 코딩테스트
- 하이퍼레저 패브릭
- Hyperledger Indy
- Private Data
- Hyperledger Fabric
- 어서와 데이터는 처음이지
- 암브로셔스
- 기초 of 기초 데이터 개념
- 코딜리티
- Hyperledger Fabric v1.1
- 블록체인
- 하이퍼레저 인디
- 빅데이터 기초
- 빅데이터
- DOCs
- javascript
- 빅데이터 강의
- ubuntu
- 문제풀이
- 빅데이터 교육
- 블록 체인
- codility
- Blockchain
- 직딩잇템
- 하이퍼레저 페브릭
- Hyperledger Fabric v1.2
- ambrosus
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함