frontend/javaScript

[js / 알고리즘연습] codeup - q가 입력될때까지 출력하기, 합구하기, 16진수 구구단 출력하기

김포레스트 2023. 8. 20. 12:37

1.'q'가 입력될 때까지 입력한 문자를 계속 출력하는 프로그램을 작성해보자.

function solution(...params) {
	let index = params.indexOf('q');
	const removed = params.splice(index);

	console.log(params);
}

solution('x', 'b', 'k', 'd', 'i', 'q', 'a', 'c');

배열로 출력된다.

rest 파라미터가 매우유용한 것같다.

 

indexOf 는 특정 값과 일치하는 '첫번째' element의 index 값을 반환한다.

그런데, 찾으려는 값이 없을 때는 -1을 리턴한다.(배열의 인덱스는 0부터 시작하므로)

 

splice는 배열에서 특정 인덱스 값을 가진 요소를 제거하는 역할을 한다.splice(시작할 위치, 끝나는 위치)를 입력해준다. 끝나는 위치를 입력해주지 않으면 배열의 끝까지 동작한다.

 

그런데 쓰다보니 생각난게 있다.알파벳은 대소문자 구분이 있다.q 혹은 Q가 들어올 경우를 대비해서 다시 짜야 하겠다.

 

function solution(...params) {
	let arr = [];

	params.forEach((el) => {
	 	if(el === 'Q') el = el.toLowerCase();
		arr.push(el);
	})

	let index = arr.indexOf('q');
	const removed = arr.splice(index);

	console.log(arr);
}

solution('x', 'b', 'k', 'd', 'i', 'Q', 'a', 'c');

 

뭐언가 약간 찝찝함이 남지만...일단은 끝.. 

 

2. 1, 2, 3, 4, 5 ... 를 순서대로 계속 더해 합을 만들어가다가, 입력된 정수와 같거나 커졌을 때, 마지막에 더한 정수를 출력한다.

function solution(n) {

	let i = 1;
	let result = 0;

	for ( ; ; i++) {
		
		result += i;
	
		// console.log(result);
		if (result >= n) break;
	}
	
	console.log(i);
}

solution(55);

for 문 내에서 쓰려던 i를 밖으로 빼서 선언해줬다.for문 밖에서도 쓸 것이기 때문.for문 의 초기화 부분과, 조건 부분을 모두 빈칸 처리 했다. 이렇게는 처음 써보는 것같다.

 

알고리즘 연습을 하니까알던것들의 새로운 활용방식이 보인다.

 

if문에 break를 붙이는 것도 처음임.

 

캬~

 

 

 

 

3. 입력된 16진수에 1~F까지 순서대로 곱한, 16진수 구구단을 줄을 바꿔 출력한다. 계산 결과도 16진수로 출력해야 한다.

function solution(n) {

	let hexN = n.toString(16);
	let decN = parseInt(n, 16);

	for(let j = 1; j < 16; j++) {

		let hexJ = j.toString(16);

		let result = (decN * j).toString(16);

		console.log(hexN + ' x ' + hexJ + ' = ' + result);
	}
}

solution('B');

문자를 입력 받는다 -> 표현은 16진수로, 계산은 10진수로 해야하니 각각의 변수를 만들어 저장한다.

구구단의 뒷자리를 for문 내에서 변수로 선언해준다. 이 변수도 16 진수로 표현해야 하니 새로운 변수를 만들어 둔다. 

계산은 10진수로 계산 한 값을 다시 16진수로 변환해서 result에 담아준다.

 

콘솔로 예쁘게 찍어준다.

 

 

** 출력화면 **