본문 바로가기

Baekjoon

백준 문자열 문제 Python 풀이 정리 (27866,2743,9086,11654,11720,10809,2675,1152,2908,5622,11718)

반응형

백준 문제풀이

27866

단어 S와 정수 i가 주어졌을 때, S의 i번째 글자를 출력하는 프로그램을 작성하시오.

S = input()
i = int(input())
print(S[i-1])

2743

알파벳으로만 이루어진 단어를 입력받아, 그 길이를 출력하는 프로그램을 작성하시오.

print(len(input()))

9086

문자열을 입력으로 주면 문자열의 첫 글자와 마지막 글자를 출력하는 프로그램을 작성하시오.

x=int(input())

for i in range(x):
    word = input()
    print(word[0], word[-1], sep='')

11654

알파벳 소문자, 대문자, 숫자 0-9중 하나가 주어졌을 때, 주어진 글자의 아스키 코드값을 출력하는 프로그램을 작성하시오.

x = input()
print (ord(x))

11720

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

n = input()
numbers = list(map(int,input()))
print(sum(numbers))

10809

알파벳 소문자로만 이루어진 단어 S가 주어진다. 각각의 알파벳에 대해서, 단어에 포함되어 있는 경우에는 처음 등장하는 위치를, 포함되어 있지 않은 경우에는 -1을 출력하는 프로그램을 작성하시오.

S = list(input())
c = 'abcdefghijklmnopqrstuvwxyz'

for i in c:
    if i in S:
        print(S.index(i), end =' ')
    else:
        print(-1, end=' ')

※ python index란

리스트나 문자열에서 문자를 찾아서 위치를 출력해주는 함수
리스트나 문자열에 찾으려는 문자가 여러개 있을때는 가장 처음 위치를 출력

예시) 리스트에서 index() 사용하기

# 리스트 예시
numbers = [10, 20, 30, 40, 50]

# 값 30의 인덱스 찾기
index_of_30 = numbers.index(30)
print(index_of_30)  # 출력: 2

예시) 문자열에서 index() 사용하기

# 문자열 예시
text = "hello world"

# 문자 'o'의 인덱스 찾기
index_of_o = text.index('o')
print(index_of_o)  # 출력: 4

2675

문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다.

QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ$%*+-./: 이다.

※ 테스트 케이스가 좀 빠진 듯..


T = int(input())

for _ in range(T):
    R, S = input().split()
    for x in S:
        print(x*int(R), end='') 
    print()

1152

영어 대소문자와 공백으로 이루어진 문자열이 주어진다. 이 문자열에는 몇 개의 단어가 있을까? 이를 구하는 프로그램을 작성하시오. 단, 한 단어가 여러 번 등장하면 등장한 횟수만큼 모두 세어야 한다.

word_list = input().split()
print(len(word_list))

오답

# 처음엔.. index함수를 쓰려고 이렇게 만들었는데.. 동일한 단어가 여러개 있으면 첫번째 문자를 반환하므로 오답
word_list = input().split()
last_word = word_list[-1]
print(int(word_list.index(last_word))+1)

2908

상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다.

상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.

두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.

num_list1, num_list2 = map(str, input().split())

num1=num_list1[2]+num_list1[1]+num_list1[0]
num2=num_list2[2]+num_list2[1]+num_list2[0]

if int(num1)>int(num2):
    print(num1)
elif int(num1)<int(num2):
    print(num2)

5622

전화를 걸고 싶은 번호가 있다면, 숫자를 하나를 누른 다음에 금속 핀이 있는 곳 까지 시계방향으로 돌려야 한다. 숫자를 하나 누르면 다이얼이 처음 위치로 돌아가고, 다음 숫자를 누르려면 다이얼을 처음 위치에서 다시 돌려야 한다.

숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해선 1초씩 더 걸린다.

상근이의 할머니는 전화 번호를 각 숫자에 해당하는 문자로 외운다. 즉, 어떤 단어를 걸 때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다.

할머니가 외운 단어가 주어졌을 때, 이 전화를 걸기 위해서 필요한 최소 시간을 구하는 프로그램을 작성하시오.

# 알파벳 그룹 리스트
alpha_list = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ']

# 입력받은 문자열
num = input()

# 총 시간을 저장할 변수
total_time = 0

# 입력받은 문자열의 각 문자를 반복
for char in num:
    # 알파벳 그룹에서 문자가 속한 그룹을 찾고, 해당 인덱스를 시간으로 변환
    for group in alpha_list:
        if char in group:
            total_time += alpha_list.index(group) + 3  # 인덱스 + 3 (2초부터 시작)
            break


# 결과 출력
print(total_time)

11718

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

while 1:
    try:
        print(input())
    except EOFError:
        break
반응형