반응형
문제
단어 뒤집기 2
https://www.acmicpc.net/problem/17413
풀이
설명
주어진 문자열을 뒤집은 결과를 구하는 문제입니다.
규칙은 다음과 같습니다.
- 알파벳 소문자('a'-'z'), 숫자('0'-'9'), 공백(' '), 특수 문자('<', '>')로만 이루어져 있습니다.
- 문자열의 시작과 끝은 공백이 아닙니다.
- '<'와 '>'가 문자열에 있는 경우 번갈아가면서 등장하며, '<'이 먼저 등장합니다. 또, 두 문자의 개수는 같습니다.
문자열을 순회하면서 태그 여부와 공백인지에 따라서 값을 처리하면 됩니다.
태그가 시작된 후의 문자들은 전부 배열에 넣고, 태그가 끝나면 뒤집어서 정답 배열에 넣어줍니다.
태그 바깥의 문자들은 전부 배열에 넣고, 공백 또는 태그를 마주치면 뒤집어서 정답 배열에 넣어줍니다.
예시 코드
function solution() {
const S = input();
let string = [];
const answer = [];
let isTag = false;
for (let i = 0; i < S.length; i++) {
const ch = S[i];
if (ch === "<") {
isTag = true;
answer.push(string.reverse().join(""));
string = [];
string.push(ch);
} else if (ch === ">") {
isTag = false;
string.push(ch);
answer.push(string.join(""));
string = [];
} else if (!isTag && ch === " ") {
answer.push(string.reverse().join("") + ch);
string = [];
} else string.push(ch);
}
answer.push(string.reverse().join(""));
return answer.join("");
}
'Coding Problem' 카테고리의 다른 글
[BOJ 20055] 컨베이어 벨트 위의 로봇 (0) | 2025.02.20 |
---|---|
[BOJ 1343] 폴리오미노 (0) | 2025.02.19 |
[BOJ 13413] 오셀로 재배치 (0) | 2025.02.13 |
[BOJ 2641] 다각형 그리기 (0) | 2025.02.12 |
[BOJ 2631] 줄 세우기 (0) | 2025.02.11 |