"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
예를 들어, "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
다음 예시와 같이 OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 문제이다.
첫번째 줄에서는 총 몇 번의 퀴즈가 있었는지 숫자를 입력받는 것이므로, N변수에 받아 저장해둔다. 그리고 각 퀴즈에서의 점수를 받아 저장할 변수 score배열을 생성한다.
퀴즈의 갯수 N만큼 돌아가는 반복문을 가장 먼저 생성한 후, 입력받은 퀴즈결과는 X를 기준으로 토큰을 나누어준다. 이렇게 나누어진 총 토큰의 수를 st.countTokens()함수를 통해 cnt에 저장하여 cnt값만큼 반복문을 돌려 점수를 계산한다.
각 토큰 안에는 "OO" 나 "OOOO" 와 같은 형식으로 값이 저장되어 있으며, O가 연속될수록 점수는 1점씩 올라가지만 X로 끊기면 다시 1점부터로 리셋된다. 이러한 계산을 위해 st.nextToken().length()를 통해 각 토큰의 길이를 구한 후 그만큼 반복문을 돌려 연속된 경우 1점씩 추가된 점수를 score배열에 담아준다.
이렇게 score배열에 저장된 각 점수들을 출력하면 끝!
Today's Comment
생각보다 오래걸려서 다 풀고 나서 다른 사람들 풀이를 보니까, 나처럼 3중 for문을 쓴 사람은 한 명도 없고 다 2중 for문 안에 if조건문으로 charAt()함수를 써서 풀었길래 조금 당황했다... 그 많은 풀이 중에 나처럼 푼 사람이 한 명도 없었을 줄은...? 그리고 이 단계 문제 중에 이 문제가 제일 푸는데 오래걸렸던 것 같은데 정답률은 딴 것들보다 훨 높길래 그것도 의아했다. 역시 사람마다 난이도를 다르게 느끼는 것일까? 어쨌든 결과는 나왔고 처리속도도 빠른 편이었으니까 그런가보다 했지만 charAt()은 잘 안써버릇했더니 써야겠다고 떠오르질 않았던 것 같다. 다음에는 이것도 써봐야지???
'코딩테스트 연습' 카테고리의 다른 글
[백준] 4673번 - 셀프 넘버 (PYTHON) (0) | 2022.12.12 |
---|---|
[백준] 15596번 - 정수 N개의 합 (PYTHON) (0) | 2022.12.11 |
[백준] 4344번 - 평균은 넘겠지 (JAVA) (0) | 2022.02.07 |
[백준] 1546번 - 평균 (JAVA) (0) | 2022.02.07 |
[백준] 2562번 - 최댓값 (JAVA) (0) | 2022.02.07 |