frontend/javaScript

[js / 알고리즘연습] codeup - 평가 입력받아 다르게 출력, 카운트다운 출력, 짝수 합 구하기

김포레스트 2023. 8. 19. 10:31

1. 평가 입력받아 다르게 출력하기

  문자열을 입력받아서 각각의 문자마다 출력을 달리 한다.

  문제에서 제시한 예시는 다음과 같다.

 

평가 : 내용
A : best!!!
B : good!!
C : run!
D : slowly~
나머지 문자들 : what?

 

  1-1 ) switch 문을 사용하도록 한다.

function solution(word) {
	var result;
	switch(word) {
		case 'A':
		    result = 'best!!'
			break;
		case 'B':
			result = 'good!!'
			break;
		case 'C':
			result = 'run!!'
			break;
		case 'D':
			result = 'slowly~'
			break;
		default:
			result = 'what????????'
			break;
	}
	console.log(word + ' is ' +result);
}


solution('A');
solution('C');
solution('X');

** 출력문 **

이렇게 하기는 했는데, 이상한 점이 있다.

만약에.. 진짜 만약에............................

점수 구분이 엄청나게 많다면..?

지금은 a, b, c, d 까지만 구분하고 나머지로 퉁치지만

a, b, c, d, e, f  이상의 구분이 생긴다면....?

아마 코드가 길어지는 것은 물론이고,

result에 할당되는 값도 하나하나 찾아가면서 고쳐줘야 할 것이다.

 

유지보수를 생각하면 너무나 골치아파지는 것.

(새나라의 신입이가 유지보수를 염려합니다)

 

그래서 객체에 넣는게 낫지 않을까? 라는 생각을 해보게 되었다.

 

 

1-2 ) 점수 구분을 객체에 넣어본다.

const obj = {
	A: 'best!!',
	B: 'good!!',
	C: 'run!!',
	D: 'slowly~',
	E: 'study more',
	F: 'fail T_T',
	etc: 'what????????',
}

function solution(word) {

	obj[word] == undefined ? word = 'etc' : word = word;
	
	console.log(word + ' is ' + obj[word]);
}


solution('A');
solution('F');
solution('X');

이제 수정하고 싶을 때 객체 내부에 있는 값만 수정해주면 된다.

객체가 아래와 같이 바뀐다고 해도 출력하는데는 아무런 문제가 없다

const obj = {
    A: 'best!!',
    B: 'good!!',
    C: 'run!!',
    etc: 'what????????',
}

** 출력 내용 **

 

 

2. 정수 1개 입력받아 카운트다운 출력하기

  setInterval과 clearInterval 을 사용하면 된다.

  입력된 숫자부터 0까지 카운트다운하기.

function solution(n) {

	var count = setInterval(function() {
		n--;
		console.log(n);
		if (n === 0) clearInterval(count);
	}, 1000);

}

solution(3);

 

* 주의 할 점)

setInterval은 멈추지 않고 계속 기능하기 때문에 브라우저 내에서 다른 탭을 열면 동작이 느려지도록 되어있다.

 

** 출력화면 **

 

 

3. 짝수 합 구하기

정수(1 ~ 100) 1개를 입력받아 1부터 그 수까지 짝수의 합을 구해보자.

function solution(n) {
	let result = 0;

	for(let i = 0; i <= n; i++) {
		if (i % 2 === 0) result += i;
	}
	console.log(result);
}

solution(7);

 

 

 

 

끗 -