반응형
문제
소가 길을 건너간 이유 2
https://www.acmicpc.net/problem/14468

풀이
설명
경로가 무조건 만나는 소가 몇 쌍인지를 구하는 문제입니다.
스택을 이용합니다.
과정은 다음과 같습니다.
- 문자열을 순회합니다.
- 처음 나온 문자인 경우
- 스택에 추가합니다.
- 두 번 나온 문자인 경우
- 그 사이에 있는 문자 개수를 카운트해 더합니다.
- 해당 문자를 제거합니다.
예시 코드
function solution() {
const str = input();
let cnt = 0;
const visited = Array(26).fill(false);
let stack = [];
for (let i = 0; i < str.length; i++) {
const ch = str[i];
const num = ch.charCodeAt(0) - 65;
if (!visited[num]) {
visited[num] = true;
stack.push(ch);
} else if (stack.at(-1) === ch) stack.pop();
else {
let j = stack.length - 1;
for (; j >= 0; j--) {
if (stack[j] === ch) break;
cnt++;
}
stack = [...stack.slice(0, j), ...stack.slice(j + 1)];
}
}
return cnt;
}
'Coding Problem' 카테고리의 다른 글
[BOJ 1038] 감소하는 수 (0) | 2025.04.03 |
---|---|
[BOJ 2785] 체인 (0) | 2025.03.24 |
[BOJ 2653] 수 이어가기 (0) | 2025.03.23 |
[BOJ 1913] 달팽이 (0) | 2025.03.22 |
[BOJ 2622] 삼각형만들기 (0) | 2025.03.21 |