TIL-14

정진우·2021년 6월 15일
0

TIL

목록 보기
14/54
post-thumbnail

20210615

백준 1110번 더하기 사이클

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을 붙여 두 자릿수로 만들고, 각 자리의 숫자를 더한다' 라는 조건은 반영할 필요 없음



백준 4673번 셀프 넘버

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)을 빼주면 셀프 넘버만 남는다.



백준 2941번 크로아티아 알파벳

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 값의 길이를 출력



백준 1316번 그룹 단어 체커

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이면 그룹 단어



백준 2839번 설탕 배달

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을 출력
profile
프론트엔드 개발자를 꿈꾸는

0개의 댓글