문제 설명 : k의 개수
1부터 13까지의 수에서, 1은 1, 10, 11, 12, 13 이렇게 총 6번 등장한다.
정수 i, j, k가 매개변수로 주어질 때,
i부터 j까지 k가 몇 번 등장하는지 return 하는 solution 함수는????
제한사항
- 1 ≤ i < j ≤ 100,000
- 0 ≤ k ≤ 9
입출력예
i | j | k | result |
1 | 13 | 1 | 6 |
10 | 50 | 5 | 5 |
3 | 10 | 2 | 0 |
문제 풀이
i부터 j까지 문자열로 만들고 그걸 split으로 각 문자를 배열로 만들어 준다음 filter를 사용해서 k와같은 숫자들만 구해서 길이를 구했다.
v*1은 문자인 str의 원소를 숫자로 바꿔서 k와 같은지를 확인할 수 있게 만든 것이다.
function solution(i, j, k) {
let str = ""
for(let n = i ; n <= j; n++) {
str = str+ n
}
return str.split('').filter((v) => v*1 === k).length
}
이렇게 풀면 시간이 오래 걸려서 조금 찝찝했는데
split('').filter((v) => v*1 === k ).length대신
split(k).length -1을 넣어주면 시간이 반으로 준다
( => -1을 해주는 것은 split(k)로 분리했을 때 k의 개수보다 1개가 더 많게 나오기 때문에 빼주는 것이다.)
이렇게 푸는 건 split의 여집합을 이용해서 푼다고들 한다.
문제 설명 : A로 B 만들기
문자열 before와 after가 매개변수로 주어질 때,
before의 순서를 바꾸어 after를 만들 수 있으면 1을,
만들 수 없으면 0을 return 하는 solution함수는??
제한사항
- 0 < before의 길이 == after의 길이 < 1,000
- before와 after는 모두 소문자로 이루어져 있다.
입출력예
before | after | result |
"olleh" | "hello" | 1 |
"allpe" | "apple" | 0 |
문제 풀이
접근 1) before안의 원소가 after에 포함되어 있으면 after의 원소를 빈문자로 바꾸고
다 바꾼 후에 after의 길이가 0이면 before로 after를 만들 수 있으니까 1을 반환 아니면 0을 반환하는 함수를 만듦
function solution(before, after) {
var answer = 0;
let str = after
for(let i of before) {
if(str.includes(i)){
str = str.replace(i,'')
}
}
str.length === 0 ? answer = 1 : answer = 0
return answer;
}
접근 2) 그냥 둘 다 sort로 정렬해서 맞춰보면 되지 않을까 생각 같으면 1을 다르면 0을 반환하는 함수 만듦
function solution(before, after) {
return before.split('').sort().join('') === after.split('').sort().join('') ? 1 : 0
}
문제 설명 : 이진수 더하기
이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때,
두 이진수의 합을 return 하는 solution함수???
제한사항
- return 값은 이진수를 의미하는 문자열입니다.
- 1 ≤ bin1, bin2의 길이 ≤ 10
- bin1과 bin2는 0과 1로만 이루어져 있습니다.
- bin1과 bin2는 "0"을 제외하고 0으로 시작하지 않습니다.
입출력예
bin1 | bin2 | result |
"10" | "11" | "101" |
"1001" | "1111" | "11000" |
문제 풀이
parseInt()와 toString()을 사용해서 풀었다.
parseInt()는 다른 진수를 10진수로 변환해 주고
toString()은 문자열로 만들어 주는 것도 있지만 괄호 안에 숫자의 진수로? 바꿔준다.
function solution(bin1, bin2) {
return ( parseInt(bin1,2) + parseInt(bin2,2)).toString(2)
}
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'Programmers' 카테고리의 다른 글
Programmers 문제 풀이 32 (0) | 2023.07.28 |
---|---|
Programmers 문제 풀이 31 (0) | 2023.07.27 |
Programmers 문제 풀이 29 (0) | 2023.06.27 |
Programmers 문제 풀이 28 (0) | 2023.06.24 |
Programmers 문제 풀이 27 (0) | 2023.06.23 |