컴퓨터가 데이터를 처리하는데, 가장 마지막 데이터를 처리하는 컴퓨터를 찾는 문제다.
보자마자 드는 생각은 1의 자리수를 출력하면 될거같다 라는 생각이었다.
이 표처럼, 수를 거듭제곱 하면 1의 자리수가 순환한다.(2는 2-4-8-6, 3은 3-9-7-1로 순환) 이것을 이용하는 것이다.
그런데 문제를 자세히 보다보니 한가지 놓친점을 발견했다.
곱해지는 수인 a의 범위가 1부터 100까지였던 것이다. 그래서 내 처음 생각이 틀리지 않을까 했는데, 그냥 생각대로 해도 될거같다.
이유는 어차피 원하는것은 1의 자리수이기 때문에, 수가 얼마나 크던 그 수의 1의 자리수를 제곱해나가는 것이라 1의 자리수는 순환할 거라고 생각했기 때문이다.
코드가 긴건 함수때문이다.
설명을 하자면, a가 1자리수~10까지일때, 두자리수일때(10 제외), 100일때로 나누어서 구했다. 이유는 어차피 1의자리수만 필요한거라 1자리수~10까지일때는 a그대로 쓰면 되고, 두자리수일땐 a의 나머지를 쓰면되고, 100일땐 그냥 10번째 컴퓨터가 처리할꺼니까 이렇게 나누었다.
그리고 제곱하는 수(b)를 받아 순환하는 길이로 나누어(예: 2는 2-4-8-6 이 네자리 수로 순환하므로 4로 나누어 나머지를 구했다) 나머지를 토대로 1의자리수를 구했다.
실행도 잘 된다.
망할...
코드를 보다보니 실수를 찾았다.
9인데 0을 씀;;;
ㅎ...
솔직히 뭐가 틀린건지 코드를 다시 봐도 모르겠다.
그래서 인터넷에서 어떻게 풀었나 보고 있는데, 좋은 코드를 발견했다.
짧고, 간결하다. 이걸 따라해보겠다.
제출해보겠다.
맞았네?
느낀점:
1. 솔직히 이번엔 왜 내 코드가 틀렸는지 모르겠다.. 적어도 논리적으론 맞아 보이고, 다른 사람들이 푼 논리도 나랑 비슷했다.
2. 여러 코드가 많았지만, 이 코드는 간결하면서도 주석이 없어도 쉽게 이해할 수 있어서 따라해보았다. 나도 저렇게 간결하면서 쉽게 이해할 수 있는 코드를 짤 수 있게 막 하지 말고 생각을 더욱 한 다음 코딩을 해야겠다.
'코테용 문제풀이 > 백준' 카테고리의 다른 글
X보다 작은 수 풀이 (0) | 2022.12.30 |
---|---|
별 찍기 - 1 풀이 (0) | 2022.12.30 |
백준 1004번 문제 어린 왕자 c#으로 풀기 (0) | 2019.06.08 |
백준 1003번 문제 피보나치 함수 c#으로 풀기 (0) | 2019.06.07 |
백준 1002번 문제 터렛 c#으로 풀기 (0) | 2019.06.04 |