-
문제
https://www.acmicpc.net/problem/1343
How to Solve ?
[1] 구현
1) "-1" 이 되는 기준
X 문자열은 반드시 "AAAA", "BB" 로 변경이 되어야 하기 때문에 2,4 의 수가 아니면 -1을 출력 하면 된다.
if ((board[i].length % 4) % 2 !== 0) { return -1; }
2) 어떻게 문자열을 바꿀까 ?
위에서 에러를 발생 시키는 조건도 "길이"를 가지고 접근을 했기 때문에
1) . 기준으로 문자열을 나누고
2) 각 문자열의 길이를 [ 4 ] / [ 4로 나눈 값을 2 ] 로 나누어 "AAAA"번을 몇 번 반복할지, "BB"를 몇 번 반복할지 결정 하였다.
const first = Math.floor(board[i].length / 4); const second = Math.floor((board[i].length % 4) / 2); board[i] = "AAAA".repeat(first) + "BB".repeat(second);
3) 구현 전체 코드
function solve() { board = board.split("."); for (let i = 0; i < board.length; i++) { let length = board[i].length; if ((board[i].length % 4) % 2 !== 0) { return -1; } const first = Math.floor(board[i].length / 4); const second = Math.floor((board[i].length % 4) / 2); board[i] = "AAAA".repeat(first) + "BB".repeat(second); } return board.join("."); } let board = "XXXX....XXX.....XX"; console.log(solve());
[2] Replace
더 나은 풀이 방법을 알고 싶어서, 검색을 했더니 Replace로 쉽게 변경 할 수 있었다는 것을 까먹고 있었다고 느꼈다.
위의 구현은 나름 Replace를 구현 한거라고 생각해보면 나중에 쓸 일이 있을지도 !
function solve() { board = board.replace("XXXX", "AAAA"); board = board.replace("XX", "BB"); if (board.includes("X")) { return -1; } else { return board; } } let board = "XXXX....XXX.....XX"; console.log(solve());
'PS > 백준' 카테고리의 다른 글
[백준_2531] 회전초밥 ( 투포인터 - 자바스크립트 ) (0) 2021.06.12 [백준_1969] DNA ( 그리디 - 자바스크립트 ) (0) 2021.06.12 [백준_15649] N과 M(1) [ 백트래킹(기초) - 자바스크립트 ) (0) 2021.06.10 [백준_14889] 스타트와 링크 ( 백트래킹 - 자바스크립트 ) (0) 2021.06.10 [백준_1911] 흙길 보수하기 ( Greedy - 자바스크립트 ) (0) 2021.06.10 댓글