본문 바로가기
오늘의 프로그래밍 👩‍💻

Hello Coding 프로그래밍 심화문제 챕터 9 문제풀이

by _호야_ 2022. 4. 1.
반응형

9강에서 배운 for 함수를 배웠습니다. 

for는 while 함수와 마찬가지로 반복문에 쓰이는데, 둘의 차이점은 유한인지 무한인지 입니다. 

for 함수는 반복횟수가 정해져 있는 코드를 작성할 때 쓰입니다. 

 

 

 

 

9-1 문제. [코드 9-2]를 수정해서 비밀번호를 다섯 번만 입력할 수 있게 바꾸세요. 

(힌트: while문 대신 for문을 쓰세요.)

 

  • 씽푸미니 풀이

심화문제 9-1

 

 

  • 출력

  • 씽푸미니 해설

이번 문제 역시 문제를 읽고 어떤 방향으로 문제를 풀어나가야할지 감이 잡히지 않아서 카페를 먼저 찾아보았다. 

처음 접근할때 passcodetry 와 같은 새로운 변수를 사용하지 않고, passcodeindex로 풀어서 빌드조차 되지 않았다. 

그리고 for 이중구문을 사용해야한다는 것을 알고서 bool 아래에 passcodetry 변수를 사용한 for 구문을 만들었는데 "앞으로 입력할 수 있는 기회는 n번 입니다."라는 문장이 연속으로 5개 나와서 멘붕이였다. 

 

그리고 유튜브로 해설을 찾아보니, while (true) 대신 for문을 사용하여 전체적으로 감싸야(?)한다는 것을 알았다...

 

알고리즘의 중요성을 다시금 깨닫게 되었다..

 

 

반응형

 

 

 

9-2 문제. 3학년에 다섯 개의 반이 있고 한 반의 학생은 10명입니다. 각 반의 학생들의 성적을 입력받아서 반별로 평균을 구하세요.

(힌트: 이중 for문을 쓰세요.)

 

  • 씽푸미니풀이

 

 

 

  • 씽푸미니해설

 

시행착오를 거치고 유튭에서 포프쌤의 강의를 참고해서 코드를 짰다. 뭔가 조잡한 느낌이다.

포프쌤의 강의를 듣다보니 내 식이 잘못된 것을 알았다. 성적의 합을 구할때는 total 을 0으로 미리 선언 후에 total = total + studentscore[i]로 하는게 좋을 듯 싶다. 

 

  • 시행착오

시행착오 1

성적 총합을 입력하게 한 뒤, 각 반의 평균값을 출력했다. 하지만 문제에서는 이중 for문을 사용하라고 한다.. again..!

 

 

 

 

 

시행착오2

 

이렇게 식을 세우면 그럴듯한 출력값이 나와서 맞은 줄 알았는데 포프쌤의 풀이와 비교해보니 틀리다는 것을 알았다. 

studentscore[i] = int.parse(console.readline());

라고만 쓰면 이건 합이 되지 않는다!!

 

studentscore[i] = studentscore[i] + int.parse(console.readline());

이렇게 써야 studentscore[i]에 누적된 합이 나온다!!

 

 

 

  • 포프쌤은 어떻게 풀었지?

 

  • 출력

 

처음에 classcount, studentcount 를 선언하고 풀어서 식이 더 깔끔해보인다.

 

 

반응형

댓글