Programmers

Programmers 문제 풀이 26

백단비 2023. 6. 22. 09:25

문제 설명 : OX퀴즈

덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어진다.

수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하는 solution함수???

 

제한사항

  • 연산 기호와 숫자 사이는 항상 하나의 공백이 존재한다. 단 음수를 표시하는 마이너스 기호와 숫자 사이에는 공백이 존재하지 않는다.
  • 1 ≤ quiz의 길이 ≤ 10
  • X, Y, Z는 각각 0부터 9까지 숫자로 이루어진 정수를 의미하며, 각 숫자의 맨 앞에 마이너스 기호가 하나 있을 수 있고 이는 음수를 의미한다.
  • X, Y, Z는 0을 제외하고는 0으로 시작하지 않는다.
  • -10,000 ≤ X, Y ≤ 10,000
  • -20,000 ≤ Z ≤ 20,000
  • [연산자]는 +와 -중 하나임

 

입출력 예

 

quiz result
["3 - 4 = -3", "5 + 6 = 11"] ["X", "O"]
["19 - 6 = 13", "5 + 66 = 71", "5 - 15 = 63", "3 - 1 = 2"] ["O", "O", "X", "O"]

 

문제 풀이

 

eval를 쓰지 않고 풀어서 코드가 길어졌다...

function solution(quiz) {
	var answer= []
	for(let i = 0; i<quiz.length; i++) {
		let a = quiz[i].split(" = ")[0]
		let b = quiz[i].split(" = ")[1]
        
		if(quiz[i].includes(" - ")){
			if(a.split(" - ").reduce((a,b) => Number(a)-Number(b))=== Number(b)){
				answer.push("O")
			} else {
				answer.push("X")
			}
		} 
		if(quiz[i].includes(" + ")){
			if(a.split(" + ").reduce((a,b) => Number(a) + Number(b)) === Number(b)){
				answer.push("O")
			} else {
				answer.push("X")
			}
		}     
	}
	return answer
}

 

 


 

 

문제 설명 : 숫자 찾기

정수 num과 k가 매개변수로 주어질 때,

num을 이루는 숫자 중에 k가 있으면 num의 그 숫자가 있는 자리 수를 return 하고

없으면 -1을 return하는 solution 함수???

 

제한사항

  • 0 < num < 1,000,000
  • 0 ≤ k < 10
  • num에 k가 여러 개 있으면 가장 처음 나타나는 자리를 return 한다.

 

입출력 예

 

num k result
29183 1 3
232443 4 4
123456 7 -1

 

문제 풀이

 

숫자를 문자열로 바꿔서 문자열에 k가 있으면 indexOf로 인덱스를 찾고 +1을 해주고 아니면 -1을 해줬다.

function solution(num, k) {
	let str = num.toString()
	return str.includes(k) ? str.indexOf(k)+1 : -1
}

 

 


 

 

문제 설명

my_string은 "3 + 5"처럼 문자열로 된 수식이다.

문자열 my_string이 매개변수로 주어질 때, 수식을 계산한 값을 return하는 solution함수???

 

제한사항

  • 연산자는 +, - 만 존재한다.
  • 문자열의 시작과 끝에는 공백이 없다.
  • 0으로 시작하는 숫자는 주어지지 않는다.
  • 잘못된 수식은 주어지지 않는다.
  • 5 ≤ my_string의 길이 ≤ 100
  • my_string을 계산한 결과값은 1이상 100,000 이하이다.
    • my_string의 중간 계산 값은 -100,000 이상 100,000 이하이다.
    • 계산에 사용하는 숫자는 1이상 20,000 이하인 자연수이다.
    • my_string에는 연산자가 적어도 하나 포함되어 있다.
  • return type은 정수형이다.
  • my_string의 숫자와 연산자는 공백 하나로 구분되어 있다.

제한사항이 많은 이유가 뭘까....

 

입출력 예

 

my_string result
"3 + 4" 7

 

문제 풀이

 

이 문제도 eval함수로 풀면 순식간이지만 switch case문도 적용해볼겸 풀어봤다

result와 str에 +를 해준건 number형식으로 바꾸기 위함이다.

연산자와 숫자는 공백으로 구분되어있다고 했으니 문자열을 공백을 기준으로 배열을 만들어서 풀었다.

function solution(my_string) {
	let str = my_string.split(" ")
	let result = str[0];
	for(let i=0; i<str.length; i++){
		switch(str[i]) {
			case "+" :  result = +result + +str[i+1];
			break;
			case "-" : result = +result - +str[i+1] 
            break;
		}  
	} 
	return result;
}

 

 

https://programmers.co.kr 

 

프로그래머스

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

programmers.co.kr

 

320x100

'Programmers' 카테고리의 다른 글

Programmers 문제 풀이 28  (0) 2023.06.24
Programmers 문제 풀이 27  (0) 2023.06.23
Programmers 문제 풀이 25  (0) 2023.06.21
Programmers 문제 풀이 24  (0) 2023.06.20
Programmers 문제 풀이 23  (0) 2023.06.19