풀스택 과정 스터디 22. 3. 13.(일)

정유섭·2022년 3월 13일
0

오늘 같이 수업을 듣는 훈련생들과 함께 지난 자바 수업 때 배웠던 내용들을 토대로 예제를 풀어보았다.
총 4문제를 풀었으며, 7명 정도 문제에 대한 각자의 풀이 방법을 공유하며 많은 정보와 신박한 방법들을
배울 수 있었다! :D


문제 1 : 거스름돈

  • 지불한 금액을 나타내는 파라미터1, 물건의 가격을 나타내는 파라미터2

  • 이렇게 두 개의 파라미터를 받아 가작 적은 수의 지폐를 거슬러 주는 메소드를 만들어 주세요.

  • (단위는 50000, 10000, 5000, 1000 원입니다.)

  • 먼저, 초안이다. 처음에는 단계적으로 거스름돈에서 지폐의 단위를 차감하는 방식으로 진행을 해보았다.
  • 순차적으로 계산이 이루어지고, 거스름돈 지폐의 갯수들이 직관적으로 보이지만, 코드가 너무 길어졌다

  • 그래서 고안해낸 것이 몫과 나머지다!

  • 거스름돈에서 순차적으로 차감을 하지 않고, 지폐의 단위에 대한 몫과 나머지를 계산함으로써
    보다 간단한 식이 완성되었다.

  • 마지막으로, 지폐의 단위에 따라 나뉘어져 있던 계산식을 반복문을 통해 간편하게 계산할 수 있었다.

  • 최종적인 결과 코드이다.


문제 2 : !(팩토리얼)

  • 파라미터로 양의 정수 n을 받고 n!을 계산해서 리턴해주는 메소드를 만들어 보세요!

  • (주의! : 0!은 1입니다. System.out.println(factorial(0)); -> 1 출력)

  • 초안은 간단하게 팩토리얼에 대한 식을 구성했다.
  • 0! = 1 임에 유의하여 if문을 사용하였다.

  • 마지막으로 코드를 다듬게 되었다.

  • 자세한 출력을 도출하였으며, 마지막 숫자가 곱해질 때는 숫자만 출력하도록 for문 다음 if문을 사용하였다.


문제 3 : 피보나치 수열

  • 피보나치 수열이란?

  • 1, 1, 2, 3, 5, 8, 13, 21, 34, 55,... 과 같이

  • 1, 1로 시작해서 앞의 두항의 합이 뒤의 항으로 이루어진 수열입니다.

  • 문제 : 파라미터로 총 항의 수(n)를 받고, 입력한 총 항을 차례대로 출력하는 메소드를 만들어 보세요!

  • 초안은 익숙한 피보나치 수열의 기본식을 나타내었다.
  • 첫 번째, 두 번째 항은 고정값, 그리고 그 후의 값은 이전 두 개의 값의 합으로 구성하였다.

  • 마지막으로, 스터디를 통해 코드를 다듬었다.

  • 배열을 만들어 for문 이용이 보다 용이하였으며, 배열을 String으로 변환하여 출력함으로 결과의 가독성을 증가시켰다.


문제 4. 정수 배열을 입력받아 올림차순으로 정렬된 배열을 출력하는 메서드를 만드시오.

  • 예) int arr = { 5, 3, 4, 2, 1 }
  • Lineup(arr);
  • 결과: 1 2 3 4 5

  • 초안은 주어진 배열에서 0번째 인덱스에서 1번째 인덱스와의 대소 비교를 통해, 큰 값이 오른쪽에 위치하도록

  • 배열의 원소들을 자리 교체하였다. 그다음은 1번째와 2번째 원소들끼리 동일한 과정을 거쳐 배열에서의 최댓값이

  • 마지막 원소에 위치하도록 알고리즘을 구성하였다.
    (배열의 원소들의 자리교체는 '값의 저장값' 을 선언하고 이용하였다.)

  • 그 다음은 배열에서 마지막 원소는 최댓값이기에, 마지막 원소를 뺀 나머지 배열의 원소들에 위와 동일한 과정을 진행하였다.

  • 따라서, 위의 과정은 총 배열의 원소의 갯수 - 1개 만큼 진행을 하여야 하며

  • 원소들끼리 값을 비교해 최댓값을 도출하는 것은 배열의 원소의 갯수 - 1 - 과정의 횟수만큼 진행이 되어야한다.
    (과정이 지날수록 맨 마지막 배열의 원소는 포함하지 않으므로)

  • 이에 따라 오름차순으로 정렬된 배열을 만들어낼 수 있었다!

  • 최종은 for문으로 배열의 원소들을 출력하는 방법에 반해, 실제로 오름차순으로 정렬된 배열을 그대로 return 값으로 두어
  • 온전한 오름차순 행렬을 도출할 수 있었다.
profile
도비는 자유에요!😝

0개의 댓글