깃허브 링크 : https://github.com/jiravvit/coding-test/tree/main/baekjoon/05_Array |
이번에 파이썬 코딩을 해보면서 가장 많이 든 생각은. 이것도 있어..? 란 생각이다.
리스트의 요소들을 모두 더해주기도 하고(sum)
최댓값(max), 최솟값(min)을 찾기도 하고
심지어는 어떤 요소가 이 리시트에서 몇번째에 존재하는지도 알려준다(index) ㄷㄷ
이 리스트에 이런 요소가 몇개인지 개수도 세어줌(count)
또한 파이썬에는 중복을 포함하지 않고, 순서가 없는 set 자료형이 있다.
8958번 OX퀴즈 (링크)
나의 풀이
import sys
n = int(sys.stdin.readline())
data = []
for i in range(n):
data.append(input())
score = 0
for d in data:
tmp = list(d)
for i in range(len(d)):
if tmp[i] == 'O':
if i > 0 and tmp[i-1] > 0:
tmp[i] = tmp[i-1] + 1
elif i == 0:
tmp[0] = 1
else:
tmp[i] = 1
else:
tmp[i] = 0
#print(tmp)
for t in tmp:
score += t
print(score)
score = 0
n에 인풋 입력할 개수를 int로 넣고
그 다음 for문으로 input()함수를 이용해서 입력받아서 data 리스트에 이어 붙인다.
['OOO', 'OX', 'XOX']
data는 뭐 이런식으로 되어있다.
그 다음 for문에서 저 data 리스트에서 하나씩 가져와서 tmp라는 리스트에 넣어준다.
['O', 'O', 'O']
['O', 'X']
['X', 'O', 'X']
그리고 이 요소의 개수(정확히는 data 리스트에서의 요소 길이)만큼 for문을 돌려주는데,
[1, 2, 3]
[1, 0]
[0, 1, 0]
이런식으로 점수로 변환하면 점수 계산하기 편할 것 같아서
'O'일 때, 연속되면 이 전에 있는 숫자에 +1을 해주고, 아니면 1을 넣어주었다.
'O'가 아닌 경우('X'인 경우)는 무조건 0을 넣어주었다.
그리고 마지막에 tmp 리스트에 있는 요소들을 다 더해주는데, 지금 보니깐 굳이 for문으로 돌리지않고 그냥 바로 sum함수를 써줘도 될 것 같다;;
남의 풀이 (출처 : https://pacific-ocean.tistory.com/75)
풀이 구글링을 하다가 너무나 짧고 간결한 코드를 발견해서 같이 소개해보려고 한다..
a = int(input()) # 개수
for i in range(a):
b = input()
s = list(b)
sum = 0
c = 1
for i in s:
if i == 'O':
sum += c
c += 1
else:
c = 1
print(sum)
개수를 입력받고 그 개수만큼 for문을 돌려주는데..ㅋㅋ
['O', 'O', 'O']
정말 간단하게.. 여기서 요소가 'O'이면 sum에 c를 더해주고 c를 1 증가시켜준다.
그런데 이때 X를 만나게 되면 c를 1로 재정의를 해준다.. ㄷㄷ
너무 간단해서 깜짝 놀랐다. 나도 이렇게 생각했으면 좋았을 걸...
'Coding > Baekjoon' 카테고리의 다른 글
[백준] 단계별로 풀어보기 - 6. 함수 (python3) (4673) (0) | 2022.01.11 |
---|---|
[백준] 단계별로 풀어보기 - 4. while문 (python3) (10951, 1110) (0) | 2022.01.06 |
[백준] 단계별로 풀어보기 - 3. for문 (python3) (15552, 11022, 2438, 2439, 10871) (0) | 2022.01.05 |
[백준] 단계별로 풀어보기 - 2. if문 (python3) (2884) (0) | 2022.01.05 |
[백준] 단계별로 풀어보기 - 1. 입출력과 사칙연산 (python3) (0) | 2022.01.04 |