Programmers

Programmers 문제 풀이 18

백단비 2023. 4. 12. 08:03

문제 설명 : 제곱수 판별하기

어떤 자연수를 제곱할 때 나오는 정수를 제곱수라고 한다.

정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return 하는 solution 함수?

 

제한 사항

  • 1 ≤ n ≤ 1,000,000

 

입출력 예

n result
144 1
976 2

 

문제 풀이

 

숫자의 제곱근을 반환하는 함수 Math.sqrt()를 사용해서 문제를 풀었습니다.

자연수를 제곱했을때 나오는 정수를 제곱수라고 했으니 Math.sqrt에 숫자를 넣으면 정수가 나와야 합니다.

Math.sqrt함수를 적용한 숫자를 1로 나눈 나머지가 0이면 자연수이므로 제곱수이고 0이 아니면 자연수가 아니니 제곱수가 아닙니다.

삼항연산자를 이용하여 제곱수이면 1 제곱수가 아니면 2를 반환하게 만듭니다.

function solution(n) {
	return (Math.sqrt(n)) % 1 === 0 ? 1 : 2;
}

 

 


 

 

문제 설명 : 가위 바위 보

가위는 2 바위는 0 보는 5로 표현합니다. 

가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때,

rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return 하는 solution 함수?

 

제한 사항

  • 0 < rsp의 길이  ≤ 100
  • rsp와 길이가 같은 문자열을 return 합니다.
  • rsp는 숫자 0,2,5로 이루어져 있습니다.

 

입출력 예

rsp result
"2" "0"
"205" "052"

 

문제 풀이

 

rsp에 저장된 가위 바위 보를 모드 이기는 경우를  구해야 하기 때문에 

rsp에 문자열에 가위인 "2"가 나오면 바위인"0"을 내야 하고

바위인 "0"이 나오면 보인 "5", 보인 "5"가 나오면 가위인 "2"가 나오게 문자열을 만들어 줘야 합니다.

저는 rsp.length의 크기만큼 for loop를 만들어서 그 안에서 switch문을 사용했습니다.

function solution(rsp) {
	var answer = '' // answer에 문자를 넣어줄것이기 때문에 answer를 빈 문자열로 초기화
	for(let i = 0; i < rsp.length; i++) {
		switch(rsp[i]) {
			case"2" : answer += "0";
			break; //break을 사용안하면 case문은 끝까지 다 추가 해버림
			case"0" : answer += "5";
			break;
			case"5" : answer += "2";
			break; // 마지막에는 끝이라서 추가 안해도 상관 없음
		}
	}
	return answer;
}

 

 

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

320x100

'Programmers' 카테고리의 다른 글

Programmers 문제 풀이 20  (0) 2023.05.21
Programmers 문제 풀이 19  (0) 2023.05.20
Programmers 문제 풀이 17  (0) 2023.04.11
Programmers 문제 풀이 16  (0) 2023.04.10
Programmers 문제 풀이 15  (0) 2023.04.07