프로그래밍/파이썬 python

단계별로 풀어보기 5 - 문자열(2)

idealtrue 2023. 7. 30. 22:52
728x90

문제번호 11720번 숫자의 합

 

첫째 줄에 숫자의 개수가 입력되고, 둘째 줄에 숫자 N개가 공백없이 입력된다. 입력으로 주어진 숫자 N개의 합을 출력해야 한다.

 

답안 :

1 N = int(input())
2 num = input()
3 total = 0
4 num_list = list(num)
5 for a in num_list :
6     total += int(a)
7 print(total)

 

comment :

# 첫째 줄과 둘째 줄의 값을 받아주는 코드를 작성한다. 공백없이 입력된 숫자들을 문자열로 받는 이유는 리스트로 만든 후 각각의 원소들을 나중에 정수형으로 만들어서 계산하기 위함이다.

# 계산하기 위해서 값을 저장할 총합 변수를 0으로 설정해준다.

# 숫자에 대한 문자열을 리스트함수를 사용하여 문자 하나하나를 리스트의 요소로 만들어준다.

# 숫자리스트를 반복문을 사용하여 요소들을 정수형으로 바꾸어 총합에 더해준 후 최종적으로 출력해준다.

 

----------------------------------------------------------

 

문제번호 10809번 알파벳 찾기

 

소문자로만 이루어진 단어 S가 입력된다(S의 길이는 최대 100). 각각의 알파벳이 처음 등장하는 위치를 공백으로 a부터 차례대로 출력해야 한다. 만약에 알파벳이 단어에 포함되지 않았다면 -1을 출력해야 한다. 단어의 위치는 인덱스의 값과 같다.

 

답안 :

1  S = list(input()) 
2  alpha = list('abcdefghijklmnopqrstuvwxyz')
3  alpha2 = list('abcdefghijklmnopqrstuvwxyz')
4  for s in S : 
5      idx = alpha2.index(s)
6      if type(alpha[idx]) == str or alpha[idx] > S.index(s) :
7          alpha[idx] = S.index(s)
8  for s2 in alpha:
9      if type(s2) == str :
10         alpha[alpha.index(s2)] = -1
11 for x in alpha :
12     print(x, end=' ') 

 

comment :

# 매우 복잡하게 풀었다. find 프로시저를 이용한다면 의도에 맞게 쉽게 풀이할 수 있다.

# 이후의 comment는 내 코드에 대해서 설명을 하는 것이다.

# alpha리스트는 값을 숫자로 변경하여 실제 출력할 동적리스트이고, alpha2는 문자열이 바뀌더라도 S에 대한 인덱스를 찾아줄 부동리스트로 설정하였다.

# 입력한 문자열을 리스트 S로 받아주었는데, 문자열을 문자 각각 한 개로 나누기 위함이다.(2~3번 줄)

# for반복문을 통해서 받아주고, alpha2에서 S중 하나의 문자에 해당하는 인덱스를 추출해내고, 만약 동적리스트가 문자열이거나, (그럴 일 없지만) 인덱스가 더 작아질 경우에 동적인덱스에 문자열에 해당하는 인덱스를 넣어준다.(4~7번 줄)

# 그러면 동적리스트 alpha에 S에 대한 인덱스가 입력이 된다. 그러나 없는 문자열들은 알파벳 그대로일 것이기 때문에 -1로 바꿔주기 위한 반복문을 작성해준다.(8~10번 줄)

# 각각의 알파벳에 대해서 값이 설정이 완료되었고, 리스트 요소들을 공백을 넣어 출력해주면 된다.(11~12번 줄)

# 너무 복잡하게 생각하면 간단하게 갈 수 있는 길을 돌고 돌고 돌아서 도착할 수 있다는 것을 깨달았다....

728x90