본문 바로가기

PS/BOJ : 단계별로 풀어보기

백준 [단계별로 풀어보기]: (5단계) "문자열", python

반응형

백준 [단계별로 풀어보기]: (5단계) "문자열", python

 

1. 문제번호 및 정답비율

5단계 문자열 : 문제번호 및 정답 비율


2. 문제별 필요 지식 및 풀이 포인트

더보기

# 1. 27866 문자와 문자열
# 2. 2743 단어 길이 재기

# 3. 9086 문자열

 

# 4. 11654 아스키 코드

ord() : ascii값 리턴
chr() : ascii에 해당하는 문자 리턴

 

# 5. 11720 숫자의 합


# 6. 10809 알파벳 찾기

다시풀기

instance.index(i) : 특정 원소i의 인덱스를 반환해주는 함수


# 7. 2675 문자열 반복

다시풀기

#s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./:"


# 8. 1152 단어의 개수

# 9. 2908 상수

max(), reversed() 이용
' '.join(sequence) : sequence를 'sequence'문자열로 반환


# 10. 5622 다이얼

'''아.. 자세히 보니까 2=abc, 3=def, .. 이렇게 써있네 unucic에서 c를 2로 못박아버리니까 wa에서 계산이 안됐지..'''
'''dict 혹은 list을 이용 : dict대신 list와 enumerate(list)를 쓰는 것이 더 빠르다'''
dial = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ']
s = input()
sec = 0
for i in s:
    for idx, val in enumerate(dial):
        if i in val:
            sec += (idx+3)
print(sec)


# 11. 11718 그대로 출력하기

EOF(파일의끝, =입력값이 없어지는 상황)에 대해 알기
참고) https://www.acmicpc.net/board/view/28332'''


3. 문제별 풀이 코드

# 1. 27866 문자와 문자열
'''s = input()
n = int(input())
print(s[n-1])'''
print(input()[int(input())-1]) #숏코딩


# 2. 2743 단어 길이 재기
print(len(input()))


# 3. 9086 문자열
for i in range(int(input())):
    w = input()
    print(w[0]+w[-1])
    
    
# 4. 11654 아스키 코드
#ord() : ascii값 리턴
#chr() : ascii에 해당하는 문자 리턴
print(ord(input()))


# 5. 11720 숫자의 합
n = int(input())
s = list(map(int, input()))
print(sum(s))


# 6. 10809 알파벳 찾기
'''다시풀기'''
'''instance.index(i)는 특정 원소i의 인덱스를 반환해주는 함수'''
s = input()
sen = "abcdefghijklmnopqrstuvwxyz"
for i in sen: #sen의 원소i가
    if i in s: #s에도 있으면,
        print(s.index(i), end=' ') #s의i의 index를 호출
    else:
        print(-1, end=' ')
       
       
# 7. 2675 문자열 반복
'''다시풀기'''
#s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./:"
for _ in range(int(input())):
    n, s = input().split()
    for i in range(len(s)): #문자s길이만큼 원소s[i]를 곱해준다.
        print(int(n)*s[i], end='')
    print()


# 8. 1152 단어의 개수
s = input().split()
print(len(s))


# 9. 2908 상수
'''max(), reversed() 이용'''
''' ''.join(sequence) : sequence를 'sequence'문자열로 반환 '''
n,m = input().split() #734 893을
print(max(''.join(reversed(n)), ''.join(reversed(m)))) #437 398로 뒤집어 문자열로 반환

'''n = int(n[::-1]) #뒤집기
m = int(m[::-1])
if n>m:
    print(n)
else:
    print(b)'''


#다이얼 5622
'''아.. 자세히 보니까 2=abc, 3=def, .. 이렇게 써있네
unucic에서 c를 2로 못박아버리니까 wa에서 계산이 안됐지..
'''
'''dict이용'''
sec={'ABC':3, 'DEF':4, 'GHI':5, 'JKL':6, 'MNO':7, 'PQRS':8, 'TUV':9, 'WXYZ':10}
s = input()
result = 0
#print(sec.items()) #[('abc',3), ('def',4), ..]
#print(sec.keys()) #['abc','def',..]
for i in s: # w a
    for j,k in sec.items(): #[('abc',3), ('def',4), ..]
        if i in j: # w in 'wxyz', a in 'abc'
            result += k # 10 3
print(result) #13

'''list이용 : dict대신 list와 enumerate(list)를 쓰는 것이 더 빠르다'''
dial = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ']
s = input()
sec = 0
for i in s:
    for idx, val in enumerate(dial):
        if i in val:
            sec += (idx+3)
print(sec)


# 11. 11718 그대로 출력하기
'''EOF(파일의끝, =입력값이 없어지는 상황)에 대해 알기'''
'''참고) https://www.acmicpc.net/board/view/28332'''
while True:
    try:
        print(input())
    except EOFError:
        break
반응형