SSAFY 입과를 목표로 본격적인 SWEA 알고리즘 공부를 시작했다. 백준이나 프로그래머스와 달리, SWEA는 테스트 케이스를 직접 핸들링해야 하는 고유의 환경이 있다. 무작정 웹 에디터에서 코드를 짜기보다, 로컬에 나만의 최적화된 테스트 환경을 먼저 구축하고 D2 난이도의 핵심 문제들을 평소 내가 추구하는 설계 주도형 사고(SOP)를 기반으로 풀어내 보았다.
매번 수십 줄의 예제 입력을 웹 콘솔에 복사/붙여넣기 하는 것은 심각한 시간 낭비다. 파이썬의 sys 모듈을 활용하여 완벽한 로컬 테스트 환경을 구축했다.
import sys
# input.txt에 예제 데이터를 넣고 코드를 실행하면 0.1초 만에 테스트 완료
sys.stdin = open("input.txt", "r")
VS Code에 SWEA_Practice라는 작업 폴더를 만들고 위 코드를 템플릿화했다. 이제 디버깅과 자동완성을 100% 활용하며, 오직 '최적의 로직 설계'에만 집중할 수 있게 되었다. (단, SWEA에 최종 제출할 때는 반드시 저 두 줄을 지우거나 주석 처리해야 한다!)
단순히 문제를 푸는 것을 넘어, '이게 최선의 방식인가?'를 끊임없이 고민하며 D2의 주요 알고리즘을 뚫어냈다.
for문의 자동 진행(오름차순)에 갇히면, 달팽이처럼 벽에 부딪혀 우->하->좌->상으로 방향을 꺾는 로직을 구현할 수 없다.for문을 버리고 1차원 for문으로 전환했다. dx = [0, 1, 0, -1], dy = [1, 0, -1, 0] 방향 배열을 선언하고, 다음 방문할 좌표(nx, ny)를 미리 계산했다. 격자를 벗어나거나 이미 방문한 숫자라면 direction = (direction + 1) % 4로 방향을 90도 트는 '수동 조종' 방식을 구현했다. 복잡한 2차원 배열 상태 갱신을 다루는 완벽한 기초 훈련이었다.[::-1]을 활용했다. 미래(배열의 맨 끝)에서부터 과거로 거슬러 올라가며 max_price를 갱신해 나갔다. 이 설계를 통해 단 한 번의 순회, 즉 의 시간 복잡도로 최고가에 주식을 파는 로직을 완성했다.if문으로 검사하는 대신, 애초에 탐색 범위를 range(N - M + 1)로 한정하여 오버플로우를 원천 차단하는 깔끔한 설계를 적용했다.word == word[::-1] 단 한 줄로 코드를 끝내며 파이썬의 강력한 내장 기능을 100% 활용했다.단순히 '정답이 떴다'에 만족하지 않고, "이게 정말 최선의 설계인가?"를 집요하게 파고든 하루였다. 특히 백만 장자 프로젝트에서 뒤에서부터 배열을 탐색하며 시간 복잡도를 으로 줄여냈을 때의 쾌감은 이루 말할 수 없다.
성공적으로 로컬 환경을 세팅하고 설계 주도형 사고의 기본기까지 완벽하게 장착했으니, 다음은 드디어 대망의 D3 시그니처 문제 'View'에 도전할 차례다. SSAFY를 향해 멈추지 않고 가보자! 🔥