• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

다르게 코딩했는데, 특정 부분 오류의 이유를 모르겠어 질문드립니다.

21.09.13 17:00 작성 조회수 119

0

안녕하세요 교수님! 

강의 보면서 정말 도움 많이 받고 있습니다.

다름이 아니라, 이 문제를 for문, while문을 써서 풀려고 하다가 막혀서 질문드립니다.

제 코드는, 

//가장 많이 사용된 숫자의 개수

#include<iostream>

using namespace std;

int main()

{

int a;

int arr[10];

cin >> a;

int k=a;

while (k >= 1)

{

for (int i = 0; i < 10; i++)

{

if (i = k % 10)

arr[i]++;

}

k = k / 10;

}

for (int i = 0; i < 10; i++)

{

cout << arr[i] << " ";

}

return 0;

 

}

 

이렇게 해서 일단 arr의 배열에 잘 들어갔는지 확인 하려고 했는데, 출력 값이 안나옵니다.

일단 while loop를 빠져나오지 못하는 것으로 판단되는데, 왜 저기를 빠져나오지 못하는지 모르겠어서 질문 드립니다.

감사합니다!

답변 1

답변을 작성해보세요.

1

홍재윤님의 프로필

홍재윤

2021.09.14

교수님과 상관없이 지나가던 학생인데요...

우연히 보게되어, 아는 내용이 있어 지식 공유하고자 글 남겨봅니다...

 

if (i = k % 10)

arr[i]++;

여기부분에서 i==k%10 이 아니라  대입연산자 = 를 사용하셔서 무한루프 도는것 같네요.

 

 

 

그런데 = 를 ==로 고친 아래 코드도 굳이 for문을 사용하지않아도 될것 같아요

(물론 답을 도출하는데 있어서 문제는 없음 )

for (int i = 0; i < 10; i++)

{

if (i == k % 10)

arr[i]++;

 

}

 

arr[k%10]++;  이렇게 하는것이 훨씬 효율적으로 보입니다.

leehoogwan님의 프로필

leehoogwan

질문자

2021.09.14

헐... 너무너무 감사합니다!!

for문을 쓸 필요가 없었네요..ㅜㅜ 정말 감사해요~