JavaScript/알고리즘

프로그래머스 n보다 커질 때까지 더하기 JS ( for문 / while문 )

hihiha2 2023. 5. 28. 01:59
반응형

문제설명

정수 배열 numbers와 정수 n이 매개변수로 주어집니다. numbers의 원소를 앞에서부터 하나씩 더하다가 그 합이 n보다 커지는 순간 이때까지 더했던 원소들의 합을 return 하는 solution 함수를 작성해 주세요.

 

✅ 내 코드

function solution(numbers, n) {
  let sum = 0;
  for (let i = 0; i < numbers.length; i++) {
    sum += numbers[i];
    if (sum > n) {
      return sum;
    }
  }
}

 

 

💻 내가 사용한 방법

for문: 어떤 특정한 조건이 거짓으로 판별될 때까지 반복

 for ([초기문]; [조건문]; [증감문])
      문장

1. 초기문: 보통 1로 설정. 복잡한구문 / 변수도 가능

2. 조건문: 조건문이 참일때만 for문이 반복. 조건문이 거짓이면 for문 종결

3. 증감문: 갱신구문. 

증감문이 실행된뒤, 다시 조건문으로 돌아간다.

 

 

💻  다른사람 코드중에 배울 것

function solution(numbers, n) {
    var answer = 0;
    let i = 0;
    while(answer <= n) {
        answer += numbers[i++]
    }
    return answer;
}

for문 대신 while문을 사용한 코드인데

이렇게 짜는것이 더 간단한 방법인것같다.

 

sum의 값이 n보다 작다라는 조건이 만족할때만 numbers[i]를 더해주는 코드이다.

 

평소에 for문은 사용해도 while문은 많이 사용하지 않았는데 다음번에는 while로도 풀어봐야겠다.

코드가 더 간결해진것 같아서 마음에 들었다.

 

While문: 조건문이 참일 때 실행되는 반복문

    while (condition)
      statement

 

 

 

🙋‍♀️ 내 생각

처음에는 reduce를 사용해서 풀려다가 결국에는 for문을 사용하였다. 

이 문제를 풀면서 가장 고민했던것은 for문을 사용하든, reduce를 사용하든 합을 구하는건 쉬웠는데

어떻게해야 n보다 커지는 순간 그 동작을 멈추는지에 대한 것이었다.

 

그래서 if조건문을 사용해서 sum>n의 조건을 넣어주고

for문으로 sum이 n보다 커지는 순간부터는 더 이상 더하기를 멈추도록 했다.

 

while문을 사용하면 for문+if문을 섞은 효과가 나는것같아서 코드가 조금 더 깔끔해보이는것같다. 

다음에는 while문을 사용해서 풀어봐야겠다.

 

반응형