[ 이것이 코딩테스트다 ] 35일차

안영우·2021년 2월 15일
0
post-thumbnail

📍 백준 1152 - 단어의 개수

⚡️ 나의 풀이

백준 1152 - 단어의 개수

주어진 문자열에서 단어의 개수를 찾고 싶을 때는 띄어쓰기를 기준으로 나누고 + 1을 해주면된다.

예외상황으로 문자열의 제일 앞, 뒤는 strip() 함수를 사용해서 공백을 제거해준다.

그리고, input=' ' 공백일때를 고려해서 공백이라면 print(0) 아니면 cnt+=1을 하는 코드를 작성했다.

array = input().strip()

if len(array) == 0:
    print(0)
else:
    print(array.count(' ')+1)

📍 백준 8958 - OX 퀴즈

⚡️ 나의 풀이

백준 8958 - OX퀴즈

반복문마다 변수를 저장해놓고 계산을 하는것이 아니기때문에 첫 번째 반복문이 종료되면, cnt, sum 변수들을 초기화시켜야한다.

연속되는 숫자는 sum+=1, 연속되지 않는 숫자를 만나면 cnt=1로 초기화 시키기.

'''
5
OOXXOXXOOO
OOXXOOXXOO
OXOXOXOXOXOXOX
OOOOOOOOOO
OOOOXOOOOXOOOOX
'''

import sys

input = sys.stdin.readline
T = int(input())

for _ in range(T):
    quiz = input()
    cnt = 0
    result = 0
    for i in range(len(quiz)):
        if quiz[i] == 'O':
            cnt += 1
            result += cnt
        else:
            cnt = 0
    print(result)
👉🏽 10 9 7 55 30

📍 백준 11721 - 열 개씩 끊어 출력하기

⚡️ 나의 풀이

백준 11721 - 열 개씩 끊어 출력하기

개인적으로 너무 멀리 돌아가는 코드를 써서 한강을 건너버린 케이스..
단 2줄이면 간단하게 작성 할 수 있는 코드인데 괜히 조건을 많이 따지다 푸는 시간만 오래걸리고 코드는 비효율적인 코드가 되어버렸다 😅 😅

for문 중 range()에는 3개의 파라미터가 있다.
range(start, stop, step)인데 다음과 같다.

  1. start: 시작 숫자
  2. stop: 끝 숫자
  3. step: 숫자 사이의 거리

range(0, len(s), 10)중 마지막 step=10을 추가하면서 10마다 끊어주는 범위를 설정 할 수 있다.

# 내가 푼 코드
import sys
input = sys.stdin.readline
s = input()

for i in range(len(s)):
    if i < 10:
        print(s[i],end='')
    elif i % 10 == 0:
        print()
        print(s[i], end='')
    else:
        print(s[i], end='')
# 다른 사람이 푼 코드
import sys
input = sys.stdin.readline
s = input()

for i in range(0, len(s), 10):
    print(s[i:i+10])
profile
YW_Tech

0개의 댓글