난이도 : Level. 2
언어 : Javascript
출제 내역 : 연습문제
JadenCase 문자열 만들기
- 문장에서 첫번째 글자를 대문자로 변경하자
function solution(s) {
const newArr = s.toLowerCase().split('');
let answer = newArr[0].toUpperCase();
for (let i = 1; i<newArr.length; i++) {
if (newArr[i] === ' ') {
if (newArr[i+1] === ' ') {
answer = answer+newArr[i]
continue;
} else {
newArr[i+1] = newArr[i+1].toUpperCase()
answer = answer+newArr[i]
}
} else {
answer = answer+newArr[i]
}
}
return s[s.length-1] === " " ? answer + " " : answer
}
원래는 띄어쓰기 다음에 있는 글자를 대문자로 변경하는 코드를 작성했는데
8번 테스트에서 런타임 에러가 떠서 다른 솔루션을 확인해 봤습니다.
function solution(s) {
s = s.toLowerCase()
const newArr = s.split(' ').map(item => {
const arr = item.split('')
if (arr[0] != null) {
arr[0] = arr[0].toUpperCase()
}
return arr.join('')
}).join(' ')
return newArr
}
큰 차이는 없지만 이 솔루션은 단어별로 확인하는 방법으로 해결이 됐네요
피보나치 수
- 피보나치 수로 된 배열에서 해당 숫자를 가져오기
function solution(n) {
const newArr = [0];
let num = 1;
for (let i = 0; i<n; i++) {
newArr.push(num%1234567)
num = newArr[i]%1234567 + newArr[i+1]%1234567
}
return newArr[n];
}
2~10만 이하의 자연수가 n으로 주어지는데
그렇게 될 시, 표현할 수 있는 값에 한계를 넘어서게 됩니다.
그렇기에 1234567
로 나눈 나머지 값을 리턴하게 된 것이고,
위와 같은 코드를 작성하게 되었습니다.
최댓값과 최솟값
- 문자열에서 최댓값과 최솟값을 구해라
function solution(s) {
const newArr = s.split(' ')
newArr.sort((a,b) => a-b)
return `${newArr[0]} ${newArr[newArr.length-1]}`;
}
문자열이 공백으로 구분되어있기에 공백을 기준으로 나누고
정렬해준 뒤에, 배열 맨 앞과 맨 뒤를 가져와 문자열로 만들어준다.