article thumbnail image
Published 2022. 5. 27. 13:00
 

7개의 자연수가 주어질 때, 이들 중 홀수인 자연수들을 모두 골라 그 합을 구하고, 고른 홀수들
중 최소값을 찾는 프로그램을 작성하세요.
예를 들어, 7개의 자연수 12, 77, 38, 41, 53, 92, 85가 주어지면 이들 중 홀수는 77, 41, 53,
85이므로 그 합은
77 + 41 + 53 + 85 = 256
이 되고,
41 < 53 < 77 < 85
이므로 홀수들 중 최소값은 41이 된다.
▣ 입력설명
첫 번째 줄에 자연수 7개가 주어진다. 주어지는 자연수는 100보다 작다. 홀수가 한 개 이상
반드시 존재한다.
▣ 출력설명
첫째 줄에 홀수들의 합을 출력하고, 둘째 줄에 홀수들 중 최소값을 출력한다.
▣ 입력예제 1
12 77 38 41 53 92 85
▣ 출력예제 1
256
41

📌작성코드:

arr[i] = 배열의 인덱스
arr.length = 배열의 길이
 
 
1. 홀수들만 빼기
   -for문을 활용해서 하나씩 배열을 돌고, if문으로 비교
2. 홀수들을 더하기 -빈배열 만들어서 넣기
3. 홀수들중에 최소값을 구하기
   -for문으로 배열을 돌고 최소값 저장
4. 마지막 구한값들을 결과값에 넣기
function solution(arr) {
  let answer = []; //결과값을 저장 할 아이
  let sum = 0; //더한 값 초기 세팅
  let odd = []; // 홀수만 배열에 저장
  let min = Number.MAX_SAFE_INTEGER; //최소 값 저장

  for (let i = 0; i < arr.length; i++) {
    if (arr[i] % 2 !== 0) { //첫번째 배열을 2로 나눴을때 나머지를 구해줘라 / 나머지가 0이 아니면? = 홀수 
      sum = sum + arr[i]; //첫번째 배열부터 ~ 다 더해서 sum 안에 저장
      odd.push(arr[i]); //if 문을 돌때 i가 홀수면 odd에 다가 push해줘
    }
  }
  for (let i = 0; i < odd.length; i++) { 
    if (min > odd[i]) { //min 이라는 변수에 초기값으로 최대값을 넣어주고 그거랑 비교! 
      min = odd[i]; //배열의 첫번째가 min보다 작으면 min에 넣어줘 
    }
  }
  answer.push(sum, min); //지금은 answer가 비어있고, 그안에 sum,min의 값을 push 해야함
  return answer;
}
arr = [12, 77, 38, 41, 53, 92, 85];
console.log(solution(arr));

 

📌더 깔끔한 방법

  function solution(arr) {
    let newArr = [];
    let oddArr = [];
    let oddSum = 0;

    for (i = 0; i < arr.length; i++) {
      if (arr[i] % 2 === 1) {
        oddSum = oddSum + arr[i];
        oddArr.push(arr[i]);
      }
    }

    let min = Math.min(...oddArr);
    newArr.push(min, oddSum);

    return newArr;
  }
  arr = [12, 77, 38, 41, 53, 92, 85];
  console.log(solution(arr));

'알고리즘' 카테고리의 다른 글

[알고리즘 문제] 8번  (0) 2022.05.27
[알고리즘 문제] 7번  (0) 2022.05.27
[알고리즘 문제] 4번  (0) 2022.05.25
[알고리즘 문제] 3번  (0) 2022.05.25
[알고리즘 문제] 2번  (0) 2022.05.24
복사했습니다!