문제를 풀 때는 제출하기 전에 최소한 예제는 모두 통과될 때까지 직접 디버깅을 해보시기를 권장드립니다. 예제가 제대로 나오지 않는다면 한 줄씩 따라가면서, 어디서부터 의도한 로직과 다르게 동작하는지 출력을 해보는 등 디버깅을 하기가 수월합니다.
range(a,b)는 a부터 b-1까지의 범위를 보는 것입니다. 그래서 range(0,N-1)만큼 루프를 돌면 루프가 도는 횟수는 N-1입니다. 봐야 하는 자릿수는 N개인데, 마지막 걸 빼고 N-1개만 보고 있기 때문에 틀리게 됩니다.
i=i+1이라는 문장은 필요하지 않습니다. i in range 자체가 알아서 i의 값을 1씩 증가시켜주기 때문입니다. 루프 중간에 i의 값을 임의로 바꾸더라도, 루프가 돌 때마다 무조건 i는 0, 1, 2 순서대로 나옵니다.
또한 다른 사람들이 다른 방법으로 풀었다고 해서 이 방법이 비효율적이라는 뜻은 아닙니다. 문제를 푸는 방법은 정해져 있지 않고, 수없이 많은 종류의 풀이가 있을 수 있습니다. 다른 사람들도 절대 최적의 방법을 찾아서만 효율적으로 문제를 푸는 것이 아닙니다. 지금 코드도 효율성 면에서는 나쁘지 않습니다. 코드의 효율성은 나중에 시간 복잡도 등을 공부한 뒤에 자신의 코드에 대해 객관적으로 분석하는 연습을 해보세요.
joowonleedesu 1년 전
안녕하세요,
완전 무베이스로 취미로 파이썬 공부 중입니다.
11720번 문제를 다음과 같이 풀었는데 틀렸습니다.
그런데 질문게시판의 다른 분들 글을 보니 완전히 다른 함수를 쓰셨더라고요.
아직 제 지식이 부족해서 다른 분들이 쓴 함수에 대해 잘 모르는데 여기서 질문이
1. 제 코드는 어디서 틀렸을까요?
2. 저는 숫자를 string으로 받은 다음에 indexing 후 정수형으로 바꿔 하나씩 더해주는 방식을 생각했는데, 다른 분들은 이 방식을 안 쓴 거 보니 비효율적인 거라 생각이 됩니다. 어떤 면이 비효율적인걸까요?