20210615
https://www.acmicpc.net/problem/1110
풀이
num = int(input()) count = 0 check = num while True: temp = num // 10 + num % 10 new_num = (num % 10) * 10 + temp % 10 count += 1 num = new_num if new_num == check: break print(count)
- 입력받은 숫자(num)를 10으로 나눈 몫(num // 10)과 나머지(num % 10)로 표현
- 나머지에 10을 곱해주고 temp를 10으로 나눈 나머지를 더해줘서 새로운 숫자를 생성(new_num)
- '먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자릿수로 만들고, 각 자리의 숫자를 더한다' 라는 조건은 반영할 필요 없음
https://www.acmicpc.net/problem/4673
풀이
natural_num = set(range(1,10001)) generated_num = set() for i in range(1,10001): for j in str(i): i += int(j) generated_num.add(i) self_num = sorted(natural_num - generated_num) for i in self_num: print(i)
- 1부터 10000까지의 범위의 자연수 집합(natural_num)
- 빈 집합(generataed_num) ... 생성자
- 1부터 10000까지 for문 돌리고 그 안에 이중 반복문으로 입력되는 i를 문자열로 바꿔준 후 각각의 자릿수들이 더해질 수 있도록 함
- 그 결과를 generated_num에 추가(생성자)
- 생성자가 없는 숫자는 셀프 넘버이므로 전체(natural_num)에서 생성자가 모인 변수(generataed_num)을 빼주면 셀프 넘버만 남는다.
https://www.acmicpc.net/problem/2941
풀이
croatian = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=', 'z='] alphabet = input() for a in croatian: alphabet = alphabet.replace(a, '*') print(len(alphabet))
- 변경된 크로아티아 알파벳을 리스트(croatian)로 생성
- 입력받은 값을 alphabet으로 선언
- 입력받은 값이 croatian 안에 존재하면 *으로 변경 (두 글자를 한 글자로 세어 주기 위함)
- 변경된 alphabet 값의 길이를 출력
https://www.acmicpc.net/problem/1316
풀이
n = int(input()) group_word = 0 for _ in range(n): word = input() error = 0 for index in range(len(word)-1): if word[index] != word[index+1]: new_word = word[index+1:] if new_word.count(word[index]) > 0: error += 1 if error == 0: group_word += 1 print(group_word)
- 그룹 단어의 개수를 저장할 변수(group_word) 선언
- 입력받은 값을 word로 선언
- 그룹 단어가 아닌 경우의 수를 세기 위해 error라는 변수를 선언
- 단어의 개수 n을 입력받으면 for문은 n번 반복
- 연달은 두 문자가 다르면 두 번째 문자 이후 문자열을 새로운 단어로 생성
- 남은 문자열에서 첫 번째 문자가 있었다면 error 1씩 증가
- error가 0이면 그룹 단어
https://www.acmicpc.net/problem/2839
풀이
num = int(input()) count = 0 while num >= 0: if num % 5 == 0: count += num // 5 print(count) break else: num -= 3 count += 1 else: print(-1)
- 봉지의 개수를 셀 count라는 변수 선언
- 입력받은 숫자가 0보다 크거나 같을 때까지만 반복
- num이 5의 배수이면 count에 num을 5로 나눈 몫을 더해준다
ex) num = 15 >> count += 3- num이 5의 배수가 아니면 num에서 3을 빼주고 count에 1을 더해준다 ex) num = 18 >> 18 - 3 >> num = 15 ... count += 1
- num이 5의 배수가 되면 count에 몫을 더해준 뒤 count 출력
- num이 0이 될 때까지 5의 배수로 나누어 떨어지지 않는다면 -1을 출력