문제번호 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번 줄)
# 너무 복잡하게 생각하면 간단하게 갈 수 있는 길을 돌고 돌고 돌아서 도착할 수 있다는 것을 깨달았다....
'프로그래밍 > 파이썬 python' 카테고리의 다른 글
단계별로 풀어보기 5 - 문자열(4) (0) | 2023.08.01 |
---|---|
단계별로 풀어보기 5 - 문자열(3) (0) | 2023.07.31 |
단계별로 풀어보기 5 - 문자열(1) (0) | 2023.07.29 |
단계별로 풀어보기 4 - 1차원 배열(4) (0) | 2023.07.28 |
단계별로 풀어보기 4 - 1차원 배열(3) (0) | 2023.07.27 |