문제
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
먼저 a와 b의 토핑을 초기화 해준다. 이후 b에게만 모든 토핑을 주고 새로운 종류의 토핑일 때만 bNum을 늘려준다.
최종적으로 a에게도 b에게 했던 방법 그대로 토핑을 주면서 b에게서는 a에게 준 토핑을 뺀다.
a의 토핑 종류가 추가될 때마다 aNum을 1씩 늘려주고, b의 토핑 종류가 사라질 때마다 bNum을 1씩 빼준다.
aNum과 bNum의 값이 같을 때 서로 가진 토핑의 종류가 같은 경우이므로 answer를 1씩 늘려준다.
const solution = (topping) => {
// 토핑의 원소가 1 ~ 10,000 이므로 0제외 10001로 초기화
const aTopping = Array.from({length: 10001}, v => 0);
const bTopping = Array.from({length: 10001}, v => 0);
let answer = 0;
let aNum = bNum = 0;
topping.map(item => {
if(bTopping[item] === 0) bNum++;
bTopping[item]++;
})
topping.map(item => {
if(aTopping[item] === 0) aNum++;
aTopping[item]++;
bTopping[item]--;
if(bTopping[item] === 0) bNum--;
if(aNum === bNum) answer++;
})
return answer;
}
결론
토핑의 원소가 10000까지 올 수 있으므로 초기화에 주의하도록 하자..
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 외계어 사전 (JS) (0) | 2024.09.04 |
---|---|
[프로그래머스] 전화번호 목록 (JS) (0) | 2024.08.30 |
[프로그래머스] 호텔 대실 (JS) (0) | 2024.08.29 |
[프로그래머스] 방문 길이 (JS) (2) | 2024.08.28 |
[프로그래머스] 오픈채팅방 (JS) (0) | 2024.08.20 |