반응형

열 개씩 끊어 출력하기

티어 : Bronze 2
시간 제한 : 1 초
메모리 제한 : 256 MB
알고리즘 분류 : 구현, 문자열

 

문제

알파벳 소문자와 대문자로만 이루어진 길이가 N인 단어가 주어진다.

한 줄에 10글자씩 끊어서 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에 단어가 주어진다. 단어는 알파벳 소문자와 대문자로만 이루어져 있으며, 길이는 100을 넘지 않는다. 길이가 0인 단어는 주어지지 않는다.

 

출력

입력으로 주어진 단어를 열 개씩 끊어서 한 줄에 하나씩 출력한다. 단어의 길이가 10의 배수가 아닌 경우에는 마지막 줄에는 10개 미만의 글자만 출력할 수도 있다.

 

예제 입출력


Algorithm

입출력

 

Code

words = input()
for i in range(0, len(words), 10):
    print(words[i:i+10])

메모리: 30840 KB
시간: 68 ms

반응형
반응형

숫자의 합

티어 : Bronze 2
시간 제한 : 1 초
메모리 제한 : 256 MB
알고리즘 분류 : 수학, 문자열, 사칙연산

 

문제

N개의 숫자가 공백 없이 쓰여있다. 이 숫자를 모두 합해서 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에 숫자의 개수 N (1 ≤ N ≤ 100)이 주어진다. 둘째 줄에 숫자 N개가 공백없이 주어진다.

 

출력

입력으로 주어진 숫자 N개의 합을 출력한다.

 

예제 입출력


Algorithm

입출력

 

Code

N = int(input())
nums = map(int, list(input()))
print(sum(nums))

메모리: 30840 KB
시간: 68 ms

반응형
반응형

그대로 출력하기 2

티어 : Bronze 1
시간 제한 : 1 초
메모리 제한 : 256 MB
알고리즘 분류 : 구현, 문자열

 

문제

입력 받은 대로 출력하는 프로그램을 작성하시오.

 

입력

입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄이 주어질 수도 있고, 각 줄의 앞 뒤에 공백이 있을 수도 있다.

 

출력

입력받은 그대로 출력한다.

 

예제 입출력


Algorithm

입출력

 

Code

while True:
    try:
        print(input())
    except:
        break

메모리: 30840 KB
시간: 76 ms

반응형
반응형

그대로 출력하기

티어 : Bronze 3
시간 제한 : 1 초
메모리 제한 : 256 MB
알고리즘 분류 : 구현, 문자열

 

문제

입력 받은 대로 출력하는 프로그램을 작성하시오.

 

입력

입력이 주어진다. 입력은 최대 100줄로 이루어져 있고, 알파벳 소문자, 대문자, 공백, 숫자로만 이루어져 있다. 각 줄은 100글자를 넘지 않으며, 빈 줄은 주어지지 않는다. 또, 각 줄은 공백으로 시작하지 않고, 공백으로 끝나지 않는다.

 

출력

입력받은 그대로 출력한다.

 

예제 입출력


Algorithm

입출력

 

Code

while True:
    try:
        print(input())
    except:
        break

메모리: 30840 KB
시간: 76 ms

반응형

'백준 > Python' 카테고리의 다른 글

[백준 11720] 숫자의 합 Python  (0) 2022.05.23
[백준 11719] 그대로 출력하기 2 Python  (0) 2022.05.23
[백준 11022] A+B - 8 Python  (0) 2022.05.23
[백준 11021] A+B - 7 Python  (0) 2022.05.23
[백준 10953] A+B - 6 Python  (0) 2022.05.23
반응형

A+B - 6

티어 : Bronze 2
시간 제한 : 1 초
메모리 제한 : 256 MB
알고리즘 분류 : 수학, 문자열, 사칙연산, 파싱

 

문제

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에 테스트 케이스의 개수 T가 주어진다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. A와 B는 콤마(,)로 구분되어 있다. (0 < A, B < 10)

 

출력

각 테스트 케이스마다 A+B를 출력한다.

 

예제 입출력


Algorithm

입출력

 

Code

T = int(input())
for _ in range(T):
    print(sum(map(int, input().split(','))))

메모리: 30840 KB
시간: 76 ms

반응형

'백준 > Python' 카테고리의 다른 글

[백준 11022] A+B - 8 Python  (0) 2022.05.23
[백준 11021] A+B - 7 Python  (0) 2022.05.23
[백준 10952] A+B - 5 Python  (0) 2022.05.23
[백준 10951] A+B - 4 Python  (0) 2022.05.23
[백준 10950] A+B - 3 Python  (0) 2022.05.23
반응형

그룹 단어 체커

티어 : Silver 5
시간 제한 : 2 초
메모리 제한 : 128 MB
알고리즘 분류 : 구현, 문자열

 

문제

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.

단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다.

 

출력

첫째 줄에 그룹 단어의 개수를 출력한다.

 

예제 입출력


Algorithm

1. 입력 받은 단어를 한 글자 씩 보면서 리스트에 이미 들어있는지 확인
2. 이미 들어있는 글자가 있다면 다음 단어 확인
3. 끝까지 이미 들어있는 글자가 없다면 그룹 단어

 

Code

import sys
input = sys.stdin.readline

N = int(input())
answer = 0
for _ in range(N):
    word = input().rstrip()
    check = [word[0]]
    flag = True # 그룹 단어인 경우 True
    for index in range(1, len(word)):
        # 이전 index의 글자와 현재 index의 글자가 같으면 continue
        if word[index-1] == word[index]:
            continue
        
        # 현재 index의 글자가 이미 리스트에 들어있다면 다음 단어 확인
        if word[index] in check:
            flag = False
            break
        elif index == len(word)-1:
            flag = True
        check.append(word[index])
    
    # flag가 True인 경우 그룹 단어
    if flag:
        answer += 1
print(answer)

메모리: 30840 KB
시간: 72 ms

반응형
반응형

카이사르 암호

티어 : Bronze 2
시간 제한 : 1 초
메모리 제한 : 128 MB
알고리즘 분류 : 구현, 문자열

 

문제

가이우스 율리우스 카이사르(Gaius Julius Caesar)는 고대 로마 군인이자 정치가였다. 카이사르는 비밀스럽게 편지를 쓸 때, 'A'를 'D로', 'B'를 'E'로, 'C'를 'F'로... 이런 식으로 알파벳 문자를 3개씩 건너뛰어 적었다고 한다.

26개의 대문자 알파벳으로 이루어진 단어를 카이사르 암호 형식으로 3문자를 옮겨 겹치지 않게 나열하여 얻은 카이사르 단어가 있다. 이 카이사르 단어를 원래 단어로 돌려놓는 프로그램을 작성하시오.

각 문자별로 변환 전과 변환 후를 나타낸 건 아래와 같다.

변환전    A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 
변환후    D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

예를 들어서, 이 방법대로 단어 'JOI'를 카이사르 단어 형식으로 변환한다면 'MRL'을 얻을 수 있고, 앞의 예와 같은 방법으로 얻은 카이사르 단어 'FURDWLD'를 원래 단어로 고치면 'CROATIA'가 된다.

 

입력

입력은 한 줄로 이루어져 있으며, 그 한 줄에는 대문자 알파벳으로 구성된 단어가 1개 있다. 단어는 최대 1000자 이하이다.

 

출력

입력받은 카이사르 단어를 원래 단어로 고친 걸 출력하시면 된다.

 

예제 입출력


Algorithm

1. 카이사르: 원 문자 형태로 Dictionary 만들기
2. 입력을 받아 각 문자의 원 문자가 무엇인지 Dictionary에서 찾기

 

Code

words = input()
for i in words:
    print(Caesar[i], end = '')

메모리: 30860 KB

시간: 80 ms

 

Algorithm

1. 단어를 입력받아 각 문자를 리스트에 담음
2. 각 문자의 ASCII 코드 - 3의 글자 출력
    ☞ 문자가 D 이전이면 Z의 ASCII 코드 - 2, -1, -0

 

Code

words = input()
for i in words:
    if ord(i) < 68:
        print(chr(ord(i)+23), end = '')
    else:
        print(chr(ord(i)-3), end = '')

메모리: 30860 KB
시간: 68 ms

반응형

'백준 > Python' 카테고리의 다른 글

[백준 2606] 바이러스 Python  (0) 2022.04.08
[백준 10974] 모든 순열 Python  (0) 2022.04.08
[백준 10973] 이전 순열 Python  (0) 2022.04.08
[백준 2581] 소수 Python  (0) 2022.04.08
[백준 2217] 로프 Python  (0) 2022.04.08
반응형

A와 B

티어 : Gold 5
시간 제한 : 2 초
메모리 제한 : 512 MB
알고리즘 분류 : 구현, 문자열, 그리디 알고리즘

 

문제

수빈이는 A와 B로만 이루어진 영어 단어가 존재한다는 사실에 놀랐다. 대표적인 예로 AB (Abdominal의 약자), BAA (양의 울음 소리), AA (용암의 종류), ABBA (스웨덴 팝 그룹)이 있다.

이런 사실에 놀란 수빈이는 간단한 게임을 만들기로 했다. 두 문자열 S와 T가 주어졌을 때, S를 T로 바꾸는 게임이다. 문자열을 바꿀 때는 다음과 같은 두 가지 연산만 가능하다.

  • 문자열의 뒤에 A를 추가한다.
  • 문자열을 뒤집고 뒤에 B를 추가한다.

주어진 조건을 이용해서 S를 T로 만들 수 있는지 없는지 알아내는 프로그램을 작성하시오. 

 

입력

첫째 줄에 S가 둘째 줄에 T가 주어진다. (1 ≤ S의 길이 ≤ 999, 2 ≤ T의 길이 ≤ 1000, S의 길이 < T의 길이)

 

출력

S를 T로 바꿀 수 있으면 1을 없으면 0을 출력한다.

 

예제 입출력


Algorithm

완전 탐색 이용
1. T에서 가장 맨 뒤에 A가 있다면 A 빼기
2. T에서 가장 맨 뒤에 B가 있다면 B 빼고 reverse
3. 1, 2 과정 후 S와 동일한지 확인
4. T의 길이가 0이 되면 BREAK

 

Code

import sys
input = sys.stdin.readline

S = input().rstrip()
T = input().rstrip()

answer = '0'
while T:
    # T의 가장 맨 뒤에 A가 있다면 A 빼기
    if T[-1] == 'A':
        T = T[:-1]
    else: # T의 가장 맨 뒤에 B가 있다면 B 빼고 reverse
        T = T[:-1]
        T = T[::-1]
    
    # T의 값이 S와 같으면 break
    if T == S:
        answer = '1'
        break
print(answer)

메모리: 30864 KB
시간: 76 ms

반응형

'백준 > Python' 카테고리의 다른 글

[백준 2075] N번째 큰 수 Python  (0) 2022.03.31
[백준 3190] 뱀 Python  (0) 2022.03.31
[백준 14500] 테트로미노 Python  (0) 2022.03.31
[백준 1107] 리모컨 Python  (0) 2022.03.30
[백준 1475] 날짜 계산 Python  (0) 2022.03.30

+ Recent posts