다이얼 성공출처다국어분류

 
시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
1 초 128 MB 32825 18590 16829 57.302%

문제

상근이의 할머니는 아래 그림과 같이 오래된 다이얼 전화기를 사용한다.

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

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

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

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

입력

첫째 줄에 알파벳 대문자로 이루어진 단어가 주어진다. 단어는 2글자~15글자로 이루어져 있다.

출력

첫째 줄에 다이얼을 걸기 위해서 필요한 시간을 출력한다.

 

예제 입력 1

UNUCIC

예제 출력 1

36
 

출처

Contest > Croatian Open Competition in Informatics > COCI 2012/2013 > Contest #6 1번

알고리즘 분류

메모

 

메모 작성하기

1
2
3
4
5
6
7
8
9
10
dial = ['ABC''DEF''GHI''JKL''MNO''PQRS''TUV''WXYZ']
= input()
ret = 0
for j in range(len(a)):
    for i in dial:
        if a[j] in i:
            ret += dial.index(i)+3
            continue
print(ret)
 
cs

 

출처: j-remind.tistory.com/76

 

(파이썬) 백준 알고리즘 5622번 다이얼

문제 풀이 (Python) 1 2 3 4 5 6 7 8 dial = ['ABC', 'DEF', 'GHI', 'JKL', 'MNO', 'PQRS', 'TUV', 'WXYZ'] a = input() ret = 0 for j in range(len(a)):     for i in dial:      ..

j-remind.tistory.com

 

크로아티아 알파벳 성공출처다국어분류

문제

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.

크로아티아 알파벳변경

č c=
ć c-
dz=
đ d-
lj lj
nj nj
š s=
ž z=

예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.

dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.

입력

첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다.

단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다.

출력

입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.

 

예제 입력 1

ljes=njak

예제 출력 1

6

예제 입력 2

ddz=z=

예제 출력 2

3

예제 입력 3

nljj

예제 출력 3

3

예제 입력 4

c=c=

예제 출력 4

2

출처

Contest > Croatian Open Competition in Informatics > COCI 2008/2009 > Contest #5 1번

 

내가 풀이한 코딩...

그냥 재밌게 내가 생각하는 대로 하면서도 for를 썼어야 했나 하는 생각이 들었지만 그냥 이대로 썼다. 왜냐면 귀찮으니까 ㅎㅎ

1
2
3
4
5
6
7
8
txt = input() # 입력
cnt = txt.count('')-1 # 문자열 카운팅 후에 공백을 센 것이기에 1을 빼준다
= txt.count('nj')
= txt.count('lj')
= txt.count('dz=')
= txt.count('=')
= txt.count('-')
print(cnt - (a + b + c + d + e)) # dze의 경우는 하나를 더 빼서 수를 맞춰준다.
cs

다른 사람이 한 방식을 보니까 이걸 하나로 모아준 사람도 있었다.

내거보다 더 깔끔해졌다. 줄이 확실히 줄고 내가 쓰려던 for문까지도 잘 활용!

1
2
3
4
5
6
7
= ['c=''c-''dz=''d-''lj''nj''s=''z='
alpha = input() 
 
for t in a: 
    alpha = alpha.replace(t, '*'
 
print(len(alpha))​
cs

조금 귀찮음을 덜고 다른 시도도 해봐야겠다 ㅎㅎ

 

'코딩 > 백준코딩 파이썬' 카테고리의 다른 글

[5622]_다이얼_백준_파이썬(python)  (0) 2020.09.16
[1152]_단어개수_백준_파이썬(python)  (0) 2020.09.03
백준 코딩 시작!!  (0) 2020.09.03

백준 1152

[1152] 백준 파이썬(python)

 

1152번: 단어의 개수

첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자열이 주어진다. 이 문자열의 길이는 1,000,000을 넘지 않는다. 단어는 띄어쓰기 한 개로 구분되며, 공백이 연속해서 나오는 경우는 없다. 또한 �

www.acmicpc.net

단어의 개수를 세는 문제!

중간중간 있는 문제들은 좀 어려울 줄 알았는데 또 그렇지도 않았다.

푸는 단계는 다음과 같다.

  1. 문장을 인풋 - input()
  2. 단어별로 나누기 - .split()
  3. 세어주기 - len()
  4. 출력! - print()

간단해서 한 방에 다 몰아넣었다.

print(len((input()).split()))

끝!

내가 백준 코딩을 시작하게 될 줄이야!

이미 50문제 정도를 풀었다.

아직 쉬운 것들만 하고 있지만 단계가 점점 올라가니 곧 어려운 것들도 풀게 될 것이다 ㅎㅎ

여기에도 꾸준히 업로드 하면서 열심히 풀어봐야겠다!

+ Recent posts