[백준 코딩테스트(Python)] 반복문 - 더하기 사이클
1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫
ars420.tistory.com
문제
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 길이가 0보다 크고 80보다 작은 문자열이 주어진다. 문자열은 O와 X만으로 이루어져 있다.
출력
각 테스트 케이스마다 점수를 출력한다.
1. 문제 접근 방식
- 'O'일 때 뿐만 아니라 'O'이 연속으로 나올 때를 고려해야 함
▶ add_value라는 변수를 설정하여 초기값을 1로 지정
'O'일 때, 단순히 1을 더해주는 것이 아닌 add_value 값을 더해줌
그 다음 add_value에 1을 더해줌으로써 다음 'O'이 올 때 더해줄 값을 미리 지정
add_value에 연속적인 'O'의 갯수가 쌓임
- 'X'가 나온 이후에 'O'이 나오면 다시 앞에서 더해진 수가 아닌 다시 1부터 시작함
▶ 'X'는 아무런 값도 더해주지 않음.
그리고 'X' 이후에 나올 'O'을 위해 add_value를 1로 다시 초기화해줌
2. 풀이코드
num = int(input())
for _ in range(num):
N = list(input())
count = 0
add_value = 1
for i in N:
# 'O'일 때 뿐만 아니라 'O'이 연속으로 나올 때를 고려해야 함
if i == "O":
count += add_value
add_value += 1
# 'X'가 나온 이후에 'O'이 나오면 다시 앞에서 더해진 수가 아닌 다시 1부터 시작함
else:
add_value = 1
print(count)
이번 문제도 너~무나도 어려웠다...add_value라는 변수를 생성하여 이것을 활용한다는 생각을 하지도 못했다.
다음번엔 이런 문제가 나오면 활용할 수 있겠지...?
'코딩 테스트 > Python' 카테고리의 다른 글
[백준 코딩테스트(Python)] 기본 수학 1 - 벌집 (0) | 2022.09.05 |
---|---|
[백준 코딩테스트(Python)] 문자열 - 그룹 단어 체커 (0) | 2022.08.31 |
[백준 코딩테스트(Python)] 반복문 - 더하기 사이클 (0) | 2022.08.18 |
[백준 코딩테스트(Python)] 반복문 - A+B - 4 (0) | 2022.08.17 |
[백준 코딩테스트(Python)] 반복문 - A+B - 5 (0) | 2022.08.17 |