inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비

13. 가장 많이 사용된 자릿수

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

240

leehoogwan

작성한 질문수 17

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를 빠져나오지 못하는 것으로 판단되는데, 왜 저기를 빠져나오지 못하는지 모르겠어서 질문 드립니다.

감사합니다!

코테 준비 같이 해요! C++

답변 1

1

홍재윤

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

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

 

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]++;  이렇게 하는것이 훨씬 효율적으로 보입니다.

0

leehoogwan

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

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

테스트 케이스 질문

0

374

1

병합정렬 시간복잡도 질문

0

464

1

41.연속된 자연수의 합 문제풀이에서 수학적인 원리를 모르고 있습니다.

0

1351

2

질문드립니다.

0

378

1

질문드립니다!

0

432

1

dev 프로그램 질문

0

275

1

문제가 이해가 안되요

0

376

1

4번 나이차이 문제 접근법 질문 드립니다.

0

307

1

source file not compiled

0

1050

3

59번 질문드립니다.

0

373

1

25번 문제 질문

0

349

1

4. 나이차이 문제 질문입니다.

0

374

1

90번 라이언 킹 심바 1번 테스트 케이스

0

470

1

71번 문제 전역 변수 질문 있습니다

0

365

1

75번, 79번 priority_queue관련

1

356

1

75.최대 수입 스케줄

0

401

2

복면산 정답의 수

0

432

1

테스트 케이스에 대해서

0

447

1

수업 내용 질문입니다!

1

233

1

풀어보면 좋은 문제 목록 - 2580 스토쿠 DFS 질문입니다!!

0

825

2

12. 플로이드-와샬(그래프 최단거리) . 27:25초

0

255

1

다른 풀이 방식

0

317

1

크루스칼 vs 프림

0

309

1

숫자 총개수 small 질문있습니다.

0

243

1