자연수 N이 입력되면 1부터 N까지의 합을 출력하는 프로그램을 작성하세요.

입력설명 | 첫 번째 줄에 20이하의 자연수 N이 입력된다.

출력설명 | 첫 번째 줄에 1부터 N까지의 합을 출력한다.

입력예제 | 6

출력예제 | 21


풀이

1. 함수 안에 반복문(for문)을 작성해서 만든다.

2. 받아오는 매개변수 안에서 값을 계속 더하는 반복을 만들어준다.

3. 누적으로 계산되게 할 것

 

처음 작성한 함수

function sumAll(x){
	let output;
    for(let i = 1; i <= x; i++){
    	output += 1;
    }
    return output;
}

console.log(sumAll(6));

NaN가 나왔다. 

 

수정한 함수

function sumAll(x){
	let output = 0; // output에 누적해주기위해서 
    for (let i = 1; i <= x; i++) {
    	output += i; // output = output + i
    }
    return output;
}

console.log(sumAll(6));

output에 누적해주기 위해서 처음에 0으로 할당한다. 

output = output + i

우항 연산을 다 하고나서 좌항의 값이 갱신된다.

1 ← 0 + 1

3 ← 1 + 2

6 ← 3 + 3

10 ← 6 + 4

이런식으로 누적되면서 진행된다.

'💡Algorithm > 문제풀기' 카테고리의 다른 글

JS알고리즘 | 홀수  (0) 2021.04.13
JS알고리즘 | 최솟값 구하기  (0) 2021.04.12
JS알고리즘 | 연필 개수  (0) 2021.04.11
JS알고리즘 | 삼각형 판별하기  (0) 2021.04.10
JS알고리즘 | 세 수 중 최솟값  (0) 2021.04.10

연필 1 다스는 12자루입니다. 학생 1인당 연필을 1자루씩 나누어 준다고 할 때 N명이 학생수를 입력하면 필요한 연필의 다스 수를 계산하는 프로그램을 작성하세요.

입력설명 | 첫 번째 줄에 1000이하의 자연수 N이 입력된다.

출력설명 | 첫 번째 줄에 필요한 다스 수를 출력한다.

입력예제  | 25

출력예제  | 3


풀이

1. 1 다스 당 12 자루가 들어있다. 1인당 1자루 필요하다. n명이면 n자루 필요하다.

2. 학생수 n명 / 12 -> 무조건 올림을 해준다. Math.ceil() 메소드를 사용한다.

3. 매개변수는 학생수

 

처음에 작성한 함수

function pencilBox(students){
	let boxes, answer;
	students / 12 = boxes;
	answer = Math.ceil(boxes);
	return answer;
        }
        
console.log(pencilBox(25));

syntaxError 발생 

students / 12 = boxes의 할당이 잘 못되었다고 한다. 

function pencilBox(students){
	let answer, boxes;
	boxes = students / 12
	answer = Math.ceil(boxes);
	return answer;
}
        
console.log(pencilBox(25));

다시 써주었더니 잘 실행된다. 그렇지만 굳이 boxes를 변수로 작성하지않아도 되었다. 

 

 

다시 수정한 함수

function pencilBox(students){
	let answer;
	answer = Math.ceil(students / 12);
	return answer;
}
        
console.log(pencilBox(25));

boxes를 변수로 작성할 필요가 없었다. Math.ceil()안에 넣어주면 더 짧게 작성할 수 있다.

 

이거도 길다.

function pencilBox(students){
	let answer = Math.ceil(students/12);
	return answer;
}

console.log(pencilBox(25));

길이가 서로 다른 A, B, C 세 개의 막대 길이가 주어지면 이 세 막대로 삼각형을 만들 수 있 으면 “YES"를 출력하고, 만들 수 없으면 ”NO"를 출력한다.

입력설명 | 첫 번째 줄에 100이하의 서로 다른 A, B, C 막대의 길이가 주어진다.

출력설명 | 첫 번째 줄에 “YES", "NO"를 출력한다.

입력예제 1 | 6 7 11

출력예제 1 | YES

입력예제 2 | 13 33 17

출력예제 2 | NO


[풀이]

삼각형을 만드는 조건 : 가장 긴 변을 제외한 나머지 2개 변의 합이 가장 긴 변보다 커야한다. 

 

1. 가장 긴 변 찾기(max값 찾기)

세 수 중에서 최솟값 찾았던 방식을 그대로 쓴다.

 

2. 나머지 변 두 개의 합 찾기

가장긴변max보다 나머지 변 두개의 합이 커야한다.

총합 - max = 나머지 두 변의 합

총합을 변수로 작성해준다.

 

3. 나머지 변 두 개의 합 보다 max가 작으면 NO 리턴, 크면 YES 리턴

 

 

 

'💡Algorithm > 문제풀기' 카테고리의 다른 글

JS알고리즘 | 홀수  (0) 2021.04.13
JS알고리즘 | 최솟값 구하기  (0) 2021.04.12
JS알고리즘 | 1부터 N까지의 합  (0) 2021.04.11
JS알고리즘 | 연필 개수  (0) 2021.04.11
JS알고리즘 | 세 수 중 최솟값  (0) 2021.04.10

문제

100이하의 자연수 A, B, C를 입력받아 세 수 중 가장 작은 값을 출력하는 프로그램을 작성하세요.

(정렬을 사용하면 안됩니다)

 

입력설명 | 첫 번째 줄에 100이하의 세 자연수가 입력된다.

출력설명 | 첫 번째 줄에 가장 작은 수를 출력한다.

입력예제 | 6 5 11

출력예제 | 5

 

 

풀이

가장 작은 수 출력하기 위해서 A, B, C를 비교해서 작은 수를 가려낸다.

1. A와 B를 먼저 비교하고,

2. 그 중에 작은 값이랑 C랑 비교해서 가장 작은 수를 출력한다.

 

'💡Algorithm > 문제풀기' 카테고리의 다른 글

JS알고리즘 | 홀수  (0) 2021.04.13
JS알고리즘 | 최솟값 구하기  (0) 2021.04.12
JS알고리즘 | 1부터 N까지의 합  (0) 2021.04.11
JS알고리즘 | 연필 개수  (0) 2021.04.11
JS알고리즘 | 삼각형 판별하기  (0) 2021.04.10

+ Recent posts