문자열 밀기
문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요.
- 0 < A의 길이 = B의 길이 < 100
- A, B는 알파벳 소문자로 이루어져 있습니다.
function solution(A, B) {
if(A === B) return 0;
let answer = -1;
for(let i = 1; i < A.length; i++) {
const pushString = A.slice(-i);
const pushedString = A.slice(0, A.length - i);
if(pushString.concat(pushedString) === B) {
answer = i;
break;
}
}
return answer;
}
// 다른 풀이 방법
let solution=(a,b)=>(b+b).indexOf(a)
두 문자열 A와 B가 같으면 밀어도 동일하므로 0을 반환한다.
for 문을 순회하여 만들 수 없으면, -1을 리턴한다.
for 문을 돌면서 뒤에서부터 잘라낸 요소를 pushString에 할당한다.
slice를 통해 원본 배열이 조작됐으므로, 0번 인덱스부터 잘라낸 요소를 pushedString에 할당한다.
이 둘을 concat 메서드로 합쳐서 B문자열과 같으면, i의 값이 정답이 된다.
<다른 풀이 방법>
와... 미친, 한 줄 컷 대박이네...
문자열 B를 연이어 붙인 다음, 그 가운데, A의 문자열이 요소로 들어 있으면 반환된 인덱스가 정답이 된다.
숨어있는 숫자의 덧셈 (2)
문자열 my_string이 매개변수로 주어집니다. my_string은 소문자, 대문자, 자연수로만 구성되어있습니다. my_string안의 자연수들의 합을 return하도록 solution 함수를 완성해주세요.
- 1 ≤ my_string의 길이 ≤ 1,000
- 1 ≤ my_string 안의 자연수 ≤ 1000
- 연속된 수는 하나의 숫자로 간주합니다.
- 000123과 같이 0이 선행하는 경우는 없습니다.
- 문자열에 자연수가 없는 경우 0을 return 해주세요.
function solution(my_string) {
let result = 0;
for(let i = 0; i < my_string.length; i++){
let tmp = 0;
while(!Number.isNaN(Number(my_string[i]))){
tmp += my_string[i];
i++;
}
result += Number(tmp);
}
return result;
}
// 다른 풀이 방법
function solution(my_string) {
var answer = 0;
let num = '0';
for (const c of Array.from(my_string)) {
if (isNaN(+c)) {
answer += +num
num = '0'
continue
} else {
num += c
}
}
return answer + +num;
}
function solution(my_string) {
return my_string.split(/\D+/).reduce((acc, cur) => acc + Number(cur), 0);
}
<다른 풀이 방법>
배열의 요소를 변수 c로 반복문을 돌려서 추출된 요소를 숫자형으로 바꾼다(+c).
만약 숫자가 아니라면(if (isNaN(+c)), 숫자 0을 answer에 더한 후, 다시 num ='0'으로 초기화해준다. continue 문을 통해, 다음 요소를 순회한다. 요소를 순회하다가 +c가 숫자일 경우에는 nem += c를 수행한다. 이러한 규칙으로 로직을 순회한다음 answer에 num += c로 인해, 누적된 숫자형 num의 값을 더한다.
'코딩테스트 > 프로그래머스 0단계 - 입문' 카테고리의 다른 글
프로그래머스 0단계 입문 - 다음에 올 숫자 / A를 B로 만들기 (0) | 2024.04.26 |
---|---|
프로그래머스 0단계 입문 - 옹알이 (1) / 등수 매기기 (0) | 2024.04.24 |
프로그래머스 0단계 입문 - 치킨 쿠폰 / 이진수 더하기 (0) | 2024.04.24 |
프로그래머스 0단계 - Day20 수학, 시뮬레이션, 문자열, 사칙연산 (0) | 2024.03.24 |
프로그래머스 0단계 - Day19 문자열, 배열, 조건문 (0) | 2024.03.23 |
댓글