728x90
코딩 인터뷰시 기업들에서 널리 활용중인 해커랭크(HackerRank)의 문제들을 풀어보고, 정리하여 포스팅 할 계획이다.
(HackerRank사이트: https://www.hackerrank.com/)
1.문제
- 간단히 n개의 랜덤한 수를 제시해주어, 총 짝이 몇개인지 찾는 로직을 설계하는 문제이다.
- 짝을 찾지 못했거나 짝을 찾고난 뒤의 홀수개의 수는 모두 버린다
2. 풀이
'use strict';
import { WriteStream, createWriteStream } from "fs";
process.stdin.resume();
process.stdin.setEncoding('utf-8');
let inputString: string = '';
let inputLines: string[] = [];
let currentLine: number = 0;
process.stdin.on('data', function(inputStdin: string): void {
inputString += inputStdin;
});
process.stdin.on('end', function(): void {
inputLines = inputString.split('\n');
inputString = '';
main();
});
function readLine(): string {
return inputLines[currentLine++];
}
/*
* Complete the 'sockMerchant' function below.
*
* The function is expected to return an INTEGER.
* The function accepts following parameters:
* 1. INTEGER n
* 2. INTEGER_ARRAY ar
*/
function sockMerchant(n: number, ar: number[]): number {
// Write your code here
var count = 0;
var tempArr: number[] = [];
ar.forEach((item: number)=>{
if(tempArr && tempArr.indexOf(item) > -1){
tempArr.splice(tempArr.indexOf(item), 1);
count += 1;
}else {
tempArr.push(item);
}
})
return count;
}
function main() {
const ws: WriteStream = createWriteStream(process.env['OUTPUT_PATH']);
const n: number = parseInt(readLine().trim(), 10);
const ar: number[] = readLine().replace(/\s+$/g, '').split(' ').map(arTemp => parseInt(arTemp, 10));
const result: number = sockMerchant(n, ar);
ws.write(result + '\n');
ws.end();
}
- 나의 풀이 방법은 다음과 같다.
- ar Array를 이더레이션하면서 다음 검사를 진행한다.
- tempArr에 저장된 숫자인지 검사한다.
- 이미 저장된 숫자일 시, count 변수를 +1 하고, tempArr에 저장된 숫자를 제거한다.
- 이미 저장된 숫자가 아닐시, tempArr에 해당 숫자를 저장한다.
- tempArr에 저장된 숫자인지 검사한다.
- ar Array를 이더레이션을 모두 돌았을 시, count 변수를 리턴한다.
- ar Array를 이더레이션하면서 다음 검사를 진행한다.
- Discussion을 참고하니 아래와 같이 Hashset을 쓰는 방법이 vote가 가장 많은듯 하다.
- 해시셋의 개념을 공부하고, 문제를 다시 풀어보자.
Set<Integer> colors = new HashSet<>();
int pairs = 0;
for (int i = 0; i < n; i++) {
if (!colors.contains(c[i])) {
colors.add(c[i]);
} else {
pairs++;
colors.remove(c[i]);
}
}
System.out.println(pairs);
3. 결과
반응형
'Coding Test > HackerRank' 카테고리의 다른 글
HackerRank 문제풀이 - 6 (Left Rotation) (0) | 2022.12.17 |
---|---|
HackerRank 문제풀이 - 5 (2D Array - DS) (3) | 2022.12.05 |
HackerRank 문제풀이 - 4 (Jumping on the Clouds) (0) | 2022.12.05 |
HackerRank 문제풀이 - 3 (Repeated String) (0) | 2022.06.04 |
HackerRank 문제풀이 - 2 (Counting Valleys) (0) | 2022.02.13 |