byworld 님의 블로그
20260430 프로그래머스 기초 문제 다 부숴버리기 본문
[서론]
그냥 코딩 자체가 별로 재미가 없어서 프로그래머스 기초나 다 풀었다. 124문제나 되더라. 결국 어제 하루만에 다 풀었다. 아침부터 야금야금 했다. 사실 이거 다른 팀원들이 보면 안되는데... 알 바 아니긴 한다. 이제 진짜 구현 해야지.. 내 할일도 안하고 이짓하고 있는게 좀 ㅋㅋㅋ 차라리 나가서 놀지 그래...
[오늘의 추천곡] Oasis - Don't Look Back In Anger
매번 내가 좋아하는 노래 가져오는 것 같은데, 이 노래도 500번을 들었을 거다. 백인에게 화내지마라 그 놈의 샐리가 누군지는 모르겠지만... 아마 이것도 약빨고 썼을거다. 영국의 국민 밴드라고 할 수 있다. 비틀즈의 광팬이라 그 밴드 풍이 나긴 한다. 너바나가 우울을 말했다면 오아시스는 낙관을 말한다. 이 노래 역시도 후회하지말자는 얘기다. 물론 오아시스 대표인 노엘 갤러거는 독설가로 유명하다. 그에게 언급된 인간이면 성공한 거다. 난 그런 성격이 차라리 낫더라. 좋다좋다 하는 것보다는 말이다. 물론 밑도끝도없이 노엘처럼 독설하면 좀 그렇겠지만... 아무튼 밴드 입문으로 좋은 노래다.
https://youtu.be/cmpRLQZkTb8?list=RDcmpRLQZkTb8
[프로그래머스 기초]
다음은 내가 풀었던 거다.


왜인지 85%에서 옆에 멈췄다. 활동 300 보이나? 와 존나 힘들었다. 그냥 기계처럼 코드 치고 ㅋㅋ
난 C++로만 풀었다. 자바는 질색이다. 존나 쉬운 문제들이었지만 배웠던 점에 대해 써볼까한다.
오늘 대량의 기초 문제를 반복적으로 풀면서, 단순 구현을 넘어서 코드의 안정성과 정확성을 좌우하는 핵심 패턴들을 체득했다. 특히 C++에서 자주 발생하는 오류 지점과, 이를 예방하는 방식에 대해 명확한 기준이 생겼다.
첫째, size_t와 int의 타입 차이로 인한 버그 위험성을 체감했다. string.size()나 vector.size()는 unsigned 타입이기 때문에, 단순히 size() - n >= 0 같은 비교는 논리적으로 맞아 보여도 실제로는 underflow를 발생시킬 수 있다. 따라서 길이 비교는 항상 n <= size() 형태로 작성하는 것이 안전하다.
둘째, 문자열 처리에서 find와 인덱스 기반 탐색의 차이를 명확히 이해했다. 문자열을 substr로 잘라가며 탐색하는 방식은 비효율적이고 오류 가능성이 높으며, 대신 find(pos)를 이용한 위치 기반 탐색이 더 안정적이다. 특히 overlapping 패턴을 처리할 때는 인덱스를 직접 증가시키는 방식이 필수적이다.
셋째, 문자(char)와 문자열(string)의 변환 규칙을 확실히 구분하게 되었다. '0'을 더하는 방식은 단일 자리 숫자에서만 유효하며, 일반적인 정수 변환에는 to_string과 stoi를 사용하는 것이 올바른 접근이다. 이 부분은 문제를 맞추는 것보다, 언어 동작을 이해하는 데 중요했다.
넷째, range-based for에서 참조(&) 사용 기준을 정리했다. 값을 수정해야 할 경우에만 참조를 사용하고, 단순 조회 시에는 값 복사를 사용하는 것이 더 명확하다. 특히 작은 타입에서는 참조를 사용하는 것이 성능 이점이 없다는 점도 확인했다.
다섯째, 문자열 및 컨테이너 연산에서 불필요한 복사를 줄이는 습관을 형성했다. const string&, const auto&를 활용하면 성능뿐 아니라 코드 의도도 더 명확해진다. 이는 단순 최적화가 아니라 코드 품질의 문제다.
여섯째, 조건 분기 구조에서 if-else와 switch의 사용 기준을 체득했다. 값 매핑 구조에서는 switch가 더 직관적이며, 복잡한 조건에서는 if-else가 적합하다. 단순히 “빠르다”가 아니라 “구조적으로 맞는가”가 더 중요한 기준이라는 점을 이해했다.
마지막으로, 경계 조건 처리의 중요성을 반복적으로 확인했다. 빈 배열, 범위 초과 인덱스, 마지막 요소 처리 등은 대부분의 오답 원인이며, 이를 사전에 차단하는 것이 구현 능력의 핵심이라는 것을 깨달았다.
결론적으로 오늘의 학습은 문제 풀이 자체보다, “왜 이 코드가 안전한가, 최선인가”를 판단하는 기준을 정립한 것에 의미가 있다.
그냥 심심해서 했다. 귀찮긴 했다. 구현은 하기 싫고... 자고 일어나서 진짜 코딩을 해야겠다.
'TIL' 카테고리의 다른 글
| 20260430 프로그래머스 최댓값 만들기(2) (0) | 2026.05.02 |
|---|---|
| 20260501 나선형(달팽이) 배열 (0) | 2026.05.01 |
| 20260429 HTTP 상태 코드와 400 vs 422 사이에서의 고민 (0) | 2026.04.29 |
| 20260427 헥사고널이 이벤트 기반 구조에 유리한 이유와 트레이드오프 (0) | 2026.04.27 |
| 20260426 바스티온 서버 (1) | 2026.04.26 |