티스토리 뷰
내 문제 풀이
function solution(s) {
let arr = s.split("");
let middleS = Math.floor(arr.length/2)
let answer = arr.length%2===1?arr.slice(middleS,middleS+1) : arr.slice(middleS-1,middleS+1)
return answer.join('')
}
console.log(solution("abcde"));
1. 주어진 문자열을 하나씩 나눠준다.
2. 배열로 들어간 각가의 문자의 길이를 반으로 나눠준다. 대신 반으로 나눈 몫이 소수점 아래로 내려가면 내림해준다.
3. 배열의 길이가 만약 홀수이면 반으로나눈 자리를 slice메서드를 이용해 새로운 배열에 넣어주고
짝수이면 해당배열-1해준다음 가운데 두자리를 넣어준다.
4. 배열형태를 join으로 묶어서 문자열로 만들어준다음 반환합니다.
배워야 할 점
function solution(s) {
return s.substr(Math.ceil(s.length / 2) - 1, s.length % 2 === 0 ? 2 : 1);
}
console.log(solution("abcde"));
위 문제를 풀이하기 전에 substr과 substring을 비교해보자.
substr(start, length)
- substr메서드는 두개의 매개변수를 받습니다.
- 첫번째 매개변수는 추출을 시작할 위치를 나타냅니다.
- 두번째 매개변수는 추출할 문자의 길이를 나타냅니다.
- 두번째 매개변수를 생략하면 시작 위치부터 문자열의 끝가지 모두를 추출합니다.
- substr은 음수를 허용하며, 음수를 사용할 경우 문자열의 끝에서부터 역으로 추출합니다.
const str = "Hello, World!";
const result = str.substr(7, 5);
console.log(result); // 결과: World
console.log(str.substr(-6)); // 결과: World!
substring(start, end)
- substring은 두개의 매개변수를 받습니다.
- 첫번째 매개변수는 추출을 시작할 위치를 나타냅니다.
- 두번째 매개변수는 추출을 종료할 위치를 나타냅니다.
- 두번째 매개변수를 생략하면 시자구이치부터 문자열의 끝가지 모두를 추출합니다.
※ 두번째 매개변수가 첫번째 매개변수보다 작은 경우, 자동으로 두 값을 교환하여 처리합니다.
const str = "Hello, World!";
const result = str.substring(7, 12);
console.log(result); // 결과: World
//=---------------------------------
const str = "Hello, World!";
const result = str.substring(12, 7);
console.log(result); // 결과: World
이런 문자열 추출 메서드를 알고 문제를 보면 훨씬 이해가 쉽습니다.
1. 문자열에 substr을 사용하여 문자열의 시작값과 어디까지 추출할지를 정합니다.
2. 시작값은 주어진 문자열의 길이를 반으로 나눈다음 소수점이 있으면 ceil을 사용하여 하나 올려준뒤 -1을 해줍니다.
즉, 5/2 = 2.5 → 3-1 → 2 이런식입니다. 이렇게되면 문자열길이가 5일때는 인덱스 2번째가 시작값이 되는 것입니다.
3. 끝나는 값은 짝수와 홀수를 구분합니다.
만약 짝수라면 총길이가 2가 될때까지 문자를 뽑아내고
홀수라면 총길이가 1이 될때까지만 문자를 뽑아내는 조건을 줍니다.
이렇게 하면 가운데 문자를뽑아내는 문제가 해결이 됩니다.
애매하던 부분들이 정리를하니까 훨씬 알기 쉬워졌고 활용하기에도 더 좋을것 같습니다.
'개발일지 > 문제 풀이' 카테고리의 다른 글
[프로그래머스] 숫자 짝궁 (0) | 2024.03.18 |
---|---|
[프로그래머스] 기사단원의 무기 (1) | 2024.02.26 |
없는 숫자 더하기 (0) | 2024.01.18 |
프로그래머스 핸드폰 번호 가리기 (0) | 2024.01.15 |
x만큼 간격이 있는 n개의 숫자 (0) | 2024.01.10 |