브론즈1 랜덤디펜스

문제 설명 : 적혀있는 예시만 보면 이해하기 어려울 수도 있는데 1로 시작하면 1 > 11 > 12 > 23 > 35 > 58 > 83 > 31
이런 식으로 진행된다.
내 코드 :
cycle = 0
first = input()
num = first
big = 0
while True: # while True:
if int(num) < 10:
num = str(int(num) * 10 + int(num))
elif int(num[0]) + int(num[1]) < 10: # 50
num = num[1] + str(int(num[0]) + int(num[1])) # num = 0 + 5
elif int(num[0]) + int(num[1]) >= 10:
big = str(int(num[0]) + int(num[1])) # == 10
num = str(int(num[1])) + str(int(big[1])) # == 50
cycle += 1
if int(str(num)) == int(first):
print(cycle)
break
처음에 받은 수를 기억하고 있어야하지만 그 수를 변형시키면서 코드가 진행되야 하기에 num = first로
num에 처음에 받은 수를 저장했다. 처음 받은 수가 10 미만인지 아닌지로 조건문을 구분해서 달았다.
여기에서 안 걸렸으면 10이상이라는 소리니까
이렇게 num[1]을 구해도 인덱스 에러가 나지 않는다.
어떤 경우에는 문자열의 더하기 방식을 사용해야 하고 어떤 경우에는 그냥 덧셈 연산을 해야해서
int랑 str 함수를 야무지게 사용해야 했다.
마지막 줄에
이렇게 안하고 str함수로 감싸놓기만 하면 00이랑 0을 다른 숫자로 인식해버리기 때문에 반드시 int를 사용해야한다.

문제 설명보다는 예시를 보는게 좋을 것 같다.(절대 귀찮아서 이러는거 맞음)

내 코드
풀이 : 겁나 쉬워보이지만 입력의 첫번째 값은 평균을 낼 때 빼야하므로 슬라이싱을 적절히 사용해줘야 했다.
(그래서 평균낼 때 이렇게 함)
제일 짜증나는 부분은 무조건 40%도 40.000% 이렇게 소수점 3번째 자리까지 출력시키는 부분이였다.
나는 출력해야할 결과물을 b에 str로 저장하고 소수점의 인덱스를 ind에 저장한 뒤
이렇게 소수점 자리수를 맞춰줬다.
'WINK-(Web & App) > 개인 스터디 & 프로젝트' 카테고리의 다른 글
알고리즘 2인 스터디 #5주차 - 박성훈 (0) | 2023.08.16 |
---|---|
알고리즘 2인 스터디 #3주차 - 박성훈 (0) | 2023.08.01 |
알고리즘 2인 스터디 #2주차 - 박성훈 (1) | 2023.07.25 |
알고리즘 2인 스터디 #2주차 - 이총명 (0) | 2023.07.25 |
[알고리즘 개인 스터디] 2주차: DP 문제 풀이(11722, 15486) - 윤현승 (0) | 2023.07.22 |