1주차 1번(더하기 사이클)

Hyo Kyun Lee·2021년 5월 19일
0
post-thumbnail

1.문제 링크

https://www.acmicpc.net/problem/1110

2. 풀이 전 계획과 생각

  • 어떤 수학연산을 적용해야하는지 생각해보기
  • 항상 클린코드를 유의하면서 코드작성하기

3. 풀이

# N이 주어졌을때
# 연산후 다시 N이 될때까지
# 사이클 출력

import sys

N = int(sys.stdin.readline())

def get_the_number_of_cycle(N):

    new_N = (N % 10) * 10 + ((N // 10) + (N % 10)) % 10

    if new_N == N:
        return 1
    else:
        i = 1
        while new_N is not N:
            i = i + 1
            new_N = (new_N % 10) * 10 + ((new_N // 10) + (new_N % 10)) % 10

    return i

get_the_number_of_cycle(N)
print(get_the_number_of_cycle(N))

4. 풀이하면서 고민했던 점

  • 쉬운 알고리즘을 구현할 때는 최대한 시간단축을 해야한다

  • 알고리즘을 구현하는데 너무 시간이 오래걸린다
    다른 방향으로 생각하는 것도 중요하지만, 시간을 절약하는 것도 매우 중요하다.
    10분내외로 생각하고 알고리즘 구현하는 것까지 가능하도록 꾸준히 연습해보자.

  • 최대한 획기적이면서 신선한 로직만이 경쟁력!

5. 문제를 풀고 알게된 개념 및 소감

  • sys.stdin.readline()
    input 메소드와 함께 숫자/문자를 입력받을 수 있는 메소드
    기본적으로 문자열 형태로 입력받으며, 정수필요시 형태변환이 필요

  • a//b

  • a%b
    나머지

6. remind

코드에 대한 이해가 우선이다. sugar syntax보다는 sugar logic!

0개의 댓글