[백준_8958] 하, 기초(배열), OX퀴즈
Q) "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수는 3이 된다.
"OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과가 주어졌을 때, 점수를 구하는 프로그램을 작성하시오.
첫 번 째 코드
처음에는 문제를 잘못 이해했다. 잘 읽고 이해하자..
두 번 째 코드
if 조건문을 이용해 O, X 판별 + N 정수까지의 합 'ssum 함수'를 정의, 이용하여 풀었다.
마지막에 좀 헷갈렸던 게 OXOOOXOO 로 입력했을 때
조건문 루프에서 마지막 OO에서 else로 안 들어가 마지막 값이 result1에 들어가지 못 했다.
그래서 그냥 조건문 밖에 result1 += ssum(result)를 넣어 수동적으로 더해주었다.
수정 코드 1
OX를 받을 때 아예 처음부터 X를 기준으로 나눠서 list에 저장하는 방식을 이용하였다. - list(input().split('X'))
그리고 for 문 반복시 증가하는 변수 i나 x가 필요 없을 경우 _를 사용했다.
이 부분에서 개념이 좀 헷갈려 애 먹었다.
신기했던게 ox = ['OOOO', 'OOO', 'OO', '']일 때
len(ox[0])의 값이 1이 아니라 4였다는 것. 즉 문자열도 하나하나 쪼개 리스트화 시킨 것처럼 하나하나 개수를 카운팅 했다.
수정 코드 2
수정 코드 1이 더 간단하지만, 수정 코드 2에서는 ''.join()의 활용을 배울 수 있다.
ox = OOOXOOXOX 라 할 때,
ox1 = ['OOO', 'OO', 'O', '']
ox2 = ' '.join(ox1) = OOO OO O 이고
' '.join(ox1).split() = ['OOO', 'OO', 'O'] 이다
즉 join은 '' 사이 구분자를 이용하여 연속하는 문자열을 만든다.
31줄 x는 숫자가 아니라 리스트의 각 성분('OOO', 'OO', 'O')이 들어간다.
for문에 좀 더 익숙해질 필요가 있겠다.
'정글 2기 > 알고리즘' 카테고리의 다른 글
[SW사관학교 정글] WEEK00_Project_로그인 방식 (0) | 2021.08.09 |
---|---|
[백준_2908] 하, 상수 (0) | 2021.08.07 |
[백준_2675] 하, 문자열 반복 (0) | 2021.08.07 |
[WEEK01~04] 8/06 TIL_ 문자열에 변수 포함하는 방법 (0) | 2021.08.06 |
[백준_2739] 하, 기초 (반복문) 구구단 (0) | 2021.08.06 |
댓글