-
[문제풀이 후기] 백준 #30402 - 감마선을 맞은 컴퓨터문제풀이/Baekjoon 2026. 3. 17. 16:07
https://www.acmicpc.net/problem/30402
기본 상위 코드
import { readFileSync } from "fs"; const input = readFileSync(0).toString().trim();첫 번째 시도 (결과 : 성공)
접근 방식
1. 정규식으로 배경 및 공백 제거
2. 첫 글자로 결과 판단const result = input.replaceAll(/[royp \n]/g, ""); switch (result[0]) { case "w": console.log("chunbae"); break; case "b": console.log("nabi"); break; case "g": console.log("yeongcheol"); break; }
두 번째 시도 (결과 : 성공)
접근 방식
1. input 을 줄 단위 분리
2. 각 줄마다 글자 탐색 후 발견 시 즉시 종료const array = input.split("\n"); for (let i = 0; i < array.length; i++) { const result = array[i].split(" "); if (result.includes("w")) { console.log("chunbae"); break; } else if (result.includes("b")) { console.log("nabi"); break; } else if (result.includes("g")) { console.log("yeongcheol"); break; } }효과
메모리 : 9348 KB -> 9340 KB
세 번째 시도 (결과 : 성공)
접근 방식
1. 전체 문자열에서 indexOf 사용
if (input.indexOf("w") !== -1) console.log("chunbae"); else if (input.indexOf("b") !== -1) console.log("nabi"); else if (input.indexOf("g") !== -1) console.log("yeongcheol");효과
메모리 : 9340 KB -> 9336 KB
분석
첫 번째 방식 -> 세 번째 방식으로 갈 수록 성능이 좋아지는 이유
첫 번째 방식 두 번째 방식 세 번째 방식 메모리 추가 생성 정규식 줄 배열, 줄.split 배열 X 순회 여부 전체 순회 일부 순회
(조기 종료 가능)일부 순회
(조기 종료 가능)결과 분석 단위 전체 줄 문자 첫 번째 방식 : 무조건 전체를 순회함
두 번째 방식 : 줄 단위로 탐색하다가 결과 도출 시 바로 얼리 리턴이 가능함. 다만 각 줄을 split 하는 절차가 발생
세 번째 방식 : 문자 단위로 탐색하다가 결과 도출 시 바로 얼리 리턴이 가능함. 또한 indexOf 는 C++ 로 구현된 ECMAScript 의 빌트인 메서드라 더욱 속도가 빠름
'문제풀이 > Baekjoon' 카테고리의 다른 글
[문제풀이 후기] 백준 #18691 - Pokemon Buddy (0) 2026.04.07 [문제풀이 후기] 백준 #28352 - 10! (1) 2026.03.04 [문제풀이 후기] 백준 #11121 - Communication Channels (0) 2026.03.03 [문제풀이 후기] 백준 #32710 - 구구단표 (0) 2026.03.02 [문제풀이 후기] 백준 #29736 - 브실이와 친구가 되고 싶어 (0) 2026.02.27