The first century spans from the year 1 up to and including the year 100, the second century - from the year 101 up to and including the year 200, etc.
1705 --> 18
1900 --> 19
1601 --> 17
2000 --> 20
// 내 풀이
function century(year) {
if(year < 101) return 1;
const result = year % 100 === 0 ? year / 100 : Math.floor(year / 100) + 1;
return result;
}
// 다른 사람 풀이
const century = year => Math.ceil(year/100)
내 해결법: 100으로 나눠서 나머지가 있으면 세기를 1 더해준다.
더 좋은 해결법: 나머지가 있으면 .. 어차피 +1 해줄거 그냥 올림 하면 되는구나 .... ㅎ 생각을 못해따 이렇게 하나를 배워가는군👆👆
Trolls are attacking your comment section!
A common way to deal with this situation is to remove all of the vowels from the trolls' comments, neutralizing the threat.
Your task is to write a function that takes a string and return a new string with all vowels removed.
For example, the string "This website is for losers LOL!" would become "Ths wbst s fr lsrs LL!".
Note: for this kata y
isn't considered a vowel.
내 풀이
function disemvowel(str) {
return str.match(/[^aeiou]/gi).join('');
}
다른 풀이
function disemvowel(str) {
return str.replace(/[aeiou]/gi, '');
}
정규식을 사용한 것에서는 같지만, 다른 풀이에선 모음인 것을 공백으로 치환하는 방식을 사용했다.
내 풀이보다 더 나은거같다 왜냐면 다시 join으로 합쳐서 두번 작업 할 필요가 없을 것 같기 때문이다.
This time no story, no theory. The examples below show you how to write function accum:
accum("abcd") -> "A-Bb-Ccc-Dddd"
accum("RqaEzty") -> "R-Qq-Aaa-Eeee-Zzzzz-Tttttt-Yyyyyyy"
accum("cwAt") -> "C-Ww-Aaa-Tttt"
내 풀이
function accum(str) {
let result = '';
for(let i = 0; i < str.length; i++){
let temp = str[i].toUpperCase();
if(temp.length < i+1){
for(let j = 1; j < i+1; j++){
temp += str[i].toLowerCase();
}
}
if(i === str.length-1) return result+=temp;
result += (temp + '-');
}
return result;
}
다른 풀이
function accum(s) {
return s.split('').map((c, i) => (c.toUpperCase() + c.toLowerCase().repeat(i))).join('-');
}
누군가에겐 쉬울지 모르지만 X머가리인 나한텐 어렵당 ... 1레벨 올라갔는데 뭔가 생각할게 2개로 늘어난 기분이다 ..
일단 풀긴했지만 유용한 내장함수들을 좀 익히는게 좋을 것 같다. 어찌보면 풀이는 같은 방식이지만 내장함수 하나 사용으로 많이 변하게 되는 것 같다.
for 문을 선택한 이유
반복 횟수를 구하는 것을 인덱스로 사용하여 문자열에서 문자를 선택하기 위함과 반복 횟수를 구하기 위함이다.
풀이 방식
for문으로 문자열 인덱스로 순회하여 인덱스에 해당하는 문자의 첫 번째를 대문자로 설정 후
다음 글자부터 인덱스+1 만큼(문자의 개수는 index+1 해야해서) 해당 인덱스를 소문자로 반복추가
문자열 중 하나의 인덱스 반복이 끝날때 마다 '-'를 붙여주고 마지막 인덱스의 경우엔 조건문으로 바로 리턴하도록
다른 풀이를 본 후, repeat()함수를 사용하면 좀 더 가독성 있게 풀 수 있다는 것을 알게되었다.
내 풀이법에서 2중 for 문을 쓸 필요없이 첫 글자에 인덱스만큼 소문자를 repeat() 해주면 됐었다.
이렇게되면 명령형식인 for문 대신 선언적인 map함수를 사용할 수 있어서 좋은 방법인 것 같다.
고쳐야 할 점
사실 map을 돌리려했지만 Array 반환인 점, join을 해서 문자열 형식으로 전환해야한다는 점이 안좋을 것 같아 for문을 택했다. Array로 바꿔서 join하는게 안좋다고 생각하는 인식을 깨주어야겠다.
음 .. 오늘은 문제를 좀 여러개 풀었지만 멘토님께서 쉬운 문제로 일단 재미를 붙여보는것을 추천하셔서 8레벨(제일 낮은거)부터 했는데 그냥 한 40문제 풀다보니 레벨업 했다.
이제 7 레벨 푼다 ... 레벨 1가는 그 날까지 .. 화이팅 .... 레벨업 할 때 마다 알고리즘에 대한 다짐을 다시 할 예정이당
아 ... 검색 알고리즘도 들어야하는데 언제듣냐 ㅠ 10시부터 들으러감 ..