-
문자열 나누기 (c++)코딩테스트/프로그래머스 2024. 1. 31. 00:17
1. 문제
코딩테스트 연습 - 문자열 나누기 | Programmers School
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
2. 풀이
1. for문으로 s.size() 만큼 돌리기
2. 첫 글자 char c에 저장하고, 같으면 cnt_s++, 다르면 cnt_d++
3. cnt_s == cnt_d || i = s.size() - 1
- answer++
- cnt_s, cnt_d 0으로 초기화
- c = s[i + 1]
3. 생각
- s[i + 1]으로 하면 범위를 넘어서지 않을까?
- 위 3번 조건일 경우의 코드에서 s[i + 1]에 접근하는 코드가 있다.
- 만약에 i가 s의 마지막에 접근하는 index라면, i + 1로 접근할 경우에, s의 범위를 넘어선다. 그리고 그게 c에 저장된다.
- 물론 이 코드 다음에 for문이 돌면서 i++가 되고, 조건을 만족하지 못해 for문을 탈출하기는 하지만, c가 쓰레기 값을 가지게 된다는 것은 변하지 않을 것이다.
- 코딩 테스트의 경우에는 이가 문제가 되지 않을 수 있지만, 보안 상 문제가 있지 않을까? 라는 생각이 있다.
shin0112/programmers_cpp: programmers' coding test solutions (github.com)
출처 : 프로그래머스 코딩 테스트 연습 - 문자열 나누기
https://school.programmers.co.kr/learn/courses/30/lessons/140108'코딩테스트 > 프로그래머스' 카테고리의 다른 글
덧칠하기 (c++) (0) 2024.02.21 최빈값 구하기 (c++) (0) 2024.02.08 최댓값 만들기 (2) (c++) (0) 2024.01.28 시저 암호 (c++) (1) 2024.01.28 카드 뭉치 (c++) (1) 2024.01.28