강의

멘토링

로드맵

Inflearn brand logo image

인프런 커뮤니티 질문&답변

황진석님의 프로필 이미지
황진석

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2-M

이렇게 풀어도 괜찮을까요??

해결된 질문

작성

·

49

0

http://boj.kr/bd813d5bdae245ea98d864deb61326e6

항상 강의를 보기 전에 먼저 문제를 풀어보는데, 이 문제가 특히 오래 걸려서, 개선점을 조언받고 싶어 질문드립니다.

오랜 고민 끝에, 문제에서 n의 범위가 10000까지인 것을 보고, 666을 한자리씩 움직이면서 풀어보자고 생각했습니다.

photo_2025-08-03_02-47-27.jpg.webp

이미지 처럼 666을 한 자리 숫자로 보고, 총 5자리가 필요하다 싶어서 for문을 5번 썼습니다.

근데 제가 작성한 코드에서 자리수를 옮기는 방법으로 for문을 썼는데, 하드코딩을 한 느낌이라 좋은 방법은 아닌거 같아서 이렇게 풀어도 되나라는 자괴감이 들었습니다.

만약 n의 범위가 커지면 커질수록 for문을 더 많이 써야하고, 중첩된 for문도 더 많아지겠지요.

개선점이 있거나, 이 문제를 접근하는 방법 자체가 틀렸다면 알려주세요!!

답변 2

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 진석님 ㅎㅎ

오랜 고민 끝에, 문제에서 n의 범위가 10000까지인 것을 보고, 666을 한자리씩 움직이면서 풀어보자고 생각했습니다.

-> 이거 자체가 좋네요 ㅎㅎ

예를 들어 6660666 이라는 경우의 수는 없기 때문에 진석님의 로직에는 반례가 없어지게 됩니다.

 

만약 n의 범위가 커지면 커질수록 for문을 더 많이 써야하고

-> 음... 만약 n의 범위가 커지만 for문을 더 많이 쓰는 것 뿐만 아니라 6660666 이런 반례까지 다 생각을 해야 합니다.

 

개선점이 있거나, 이 문제를 접근하는 방법 자체가 틀렸다면

-> 음 로직은 좋습니다. 왜냐면... 어차피 for문의 범위 자체가 10을 기반으로 하기 때문에 최대 10000번 반복하는거라 시간복잡도상은 괜찮은 코드거든요ㅎㅎ

다만, 너무나 많은 중첩for문이 단점입니다.

이렇게 하다가는 실수가 많이 유발되기 때문에 좋지는 않은 코드라고 볼 수 있습니다.

for문 하나 써서 해당 문자열에 666 있나 체크 -> 카운팅하면서 for문 수를 줄이는게 더 좋을 것 같습니다.

 

 


 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제게 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.


0

안녕하세요, 인프런 AI 인턴입니다. 황진석님, 질문해주셔서 감사합니다.

제시하신 문제에서 666을 한 자리씩 이동시키면서 포문을 여러 번 사용하셨다고 하셨군요. 코드의 효율성과 유지보수성을 생각할 때, 현재 방법은 문제가 생길 수 있습니다. 특히 n의 범위가 더 커지면, 하드코딩된 접근 방식은 비효율적일 수 있습니다.

이 문제를 해결하기 위한 더 효과적인 방법으로는:

  1. 브루트 포스(Brute Force): 가능한 모든 숫자를 탐색하면서 666이 포함된 첫 n개의 수를 찾는 방식입니다. 특히 파이썬과 같은 언어에서는 문자열 함수를 이용하여 666이 포함된지를 쉽게 확인할 수 있으므로 효율적입니다.

  2. 정렬과 검색: 미리 생성된 666을 포함하는 수의 리스트를 정렬하고 필요한 n번째 요소를 찾는 방식도 고려할 수 있습니다.

관련 질문 및 개선점에 대한 답변을 포함한 몇 가지 유사한 예제를 확인해 보시기 바랍니다.

  1. “1940 주몽 시간복잡도”: 이 질문에서는 이중 포문을 사용하는 것에 대해 설명되어 있으며, 알고리즘 최적화에 대한 힌트를 받을 수 있습니다.

  2. “2-E”: 문제 해결 시 연산 및 코드 효율성에 대해 구체적으로 설명합니다.

  3. “3-E 12869”: 순열을 통한 조합 방법으로 문제를 해결하는 방법을 설명합니다.

이 답변이 문제 해결에 도움이 되셨기를 바랍니다. 다른 궁금증이 있거나 추가적인 지원이 필요하시면 언제든지 문의해 주세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

황진석님의 프로필 이미지
황진석

작성한 질문수

질문하기