문제 설명 : 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;
}
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
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 |