Level 1. 문자열 나누기
https://school.programmers.co.kr/learn/courses/30/lessons/140108
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 통과
2. 통과 코드
3. 문제 해석
첫 글자를 x라고 한다.
그 다음 글자부터 x와 같은 글자인지 다른 글자인지 숫자를 센다.
(첫 글자도 포함하여 숫자를 센다.)
같은 글자 수와 다른 글자 수가 같아지는 글자까지 자른다.
자른 부분 중 뒷부분의 첫 글자를 x라고 한다.
반복한다.
4. 풀이
(1) String x = "";로 초기화하고, 주어진 문자열 s의 길이만큼 for문을 작성한다.
(2) x가 ""이면 문자열 s를 substring으로 잘라 x에 저장한다.
(첫 글자를 x라고 저장하는 거다.)
(3) 첫 글자를 x로 저장했으니 x라는 글자가 1개 있는거다.
그러니 cnt++;를 한다.
그리고 continue를 사용해 다음 글자로 넘어간다.
(4) 이제부터 x와 같은 글자가 나오면 cnt++;, 다른 글자가 나오면 cnt--;를 한다.
(5) cnt가 0이되면 같은 글자 수와 다른 글자 수가 같아지는 순간이다.
이때 문제에서는 문자열을 자른다고 표현했지만 실제로 코드로 자르진 않는다.
answer++;로 1번 잘랐다고 표시해둔다.
그리고 x = ""로 초기화한다.
(for문에 다음 순서가 있다면 x를 다시 설정하기 위함이다.)
(6) for문이 끝나고 x가 ""이 아니라면 주어진 문자열 s를 자르고 나서 마지막 1글자가 남은 것이다.
예를 들어 s = "abc"라면 ab c로 잘리는데 x가 마지막에 c가 된다.
문제에서 요구하는 answer는 잘린 덩이 수이기 때문에 answer++로 1을 더해준다.
만약 x=""로 끝났다면 answer++를 하지 않아야 한다.
왜냐하면 s = "ab"라면 ab로 잘리고 x가 마지막에 ""이 되기 때문이다.
'공부해 codingTest' 카테고리의 다른 글
프로그래머스 JAVA Level 1. 대충 만든 자판 (0) | 2023.03.14 |
---|---|
프로그래머스 JAVA Level 1. 둘만의 암호 (0) | 2023.03.14 |
프로그래머스 JAVA Level 1. 카드 뭉치 (0) | 2023.03.12 |
프로그래머스 JAVA Level 1. [1차] 다트 게임 (0) | 2023.03.10 |
프로그래머스 JAVA Level 2. 카펫 (0) | 2023.03.09 |