diff --git "a/\354\247\200\353\257\274/week10/12939.js" "b/\354\247\200\353\257\274/week10/12939.js" new file mode 100644 index 0000000..18cf634 --- /dev/null +++ "b/\354\247\200\353\257\274/week10/12939.js" @@ -0,0 +1,15 @@ +// Level 2 - 최댓값과 최솟값 +function solution(s) { + let strings = s.split(""); //여기에 공백 기준으로 split 안 해서 틀림 + let maxStr = Math.max(...strings); + let minStr = Math.min(...strings); + + return minStr, maxStr; +} + +// 정담 - split 기준 잘 설정하기! +function solution(s) { + const arr = s.split(" "); + + return Math.min(...arr) + " " + Math.max(...arr); +} diff --git "a/\354\247\200\353\257\274/week10/12951.js" "b/\354\247\200\353\257\274/week10/12951.js" new file mode 100644 index 0000000..5243740 --- /dev/null +++ "b/\354\247\200\353\257\274/week10/12951.js" @@ -0,0 +1,30 @@ +//Level 2 - JadenCase 문자열 만들기 +//for ...in에서는 객체의 키와 값을 받기 때문에 배열을 돌리면 index를 반환한다. +//또한, toUpperCase는 원본을 바꾸지 않는다. 그리고 문자열을 인덱스로 수정 불가하다. +function solution(s) { + let lowStr = s.toLowerCase(); + let strs = lowStr.split(" "); + for (let word in strs) { + word[0].toUpperCase(); + } + return strs.join(" "); +} + +//다른 풀이 +function solution(s) { + return s + .split(" ") + .map((v) => v.charAt(0).toUpperCase() + v.substring(1).toLowerCase()) + .join(" "); +} + +function solution(s) { + let lowStr = s.toLowerCase(); + let strs = lowStr.split(" "); + + for (let i = 0; i < strs.length; i++) { + strs[i] = strs[i].charAt(0).toUpperCase() + strs[i].slice(1); + } + + return strs.join(" "); +} diff --git "a/\354\247\200\353\257\274/week10/178871.js" "b/\354\247\200\353\257\274/week10/178871.js" new file mode 100644 index 0000000..a40663e --- /dev/null +++ "b/\354\247\200\353\257\274/week10/178871.js" @@ -0,0 +1,32 @@ +//Level 1 - 달리기 경주 +//시간 초과 발생한 풀이 - players가 길어졌을 때 느려진다. +//이름별 index를 object로 만들어서 찾으시면 시간초과 이슈 해결 가능하다고 함. +function solution(players, callings) { + for (i = 0; i < callings.length; i++) { + const idx = players.indexOf(callings[i]); + players[idx] = players[idx - 1]; + players[idx - 1] = callings[i]; + } + return players; +} + +// 다른 풀이 +function solution(players, callings) { + let idx; + let name1; + let name2; + const idxList = {}; + + players.forEach((name, index) => (idxList[name] = index)); + for (let call of callings) { + idx = idxList[call]; + name1 = players[idx]; + name2 = players[idx - 1]; + idxList[call] -= 1; + idxList[name2] += 1; + players[idx] = name2; + players[idx - 1] = name1; + } + + return players; +} diff --git "a/\354\247\200\353\257\274/week9/12921.js" "b/\354\247\200\353\257\274/week9/12921.js" new file mode 100644 index 0000000..5a2f6f3 --- /dev/null +++ "b/\354\247\200\353\257\274/week9/12921.js" @@ -0,0 +1,19 @@ +// Level 1 - 소수 찾기 +// 다른 풀이 - 에라토스테네스의 체 +function solution(n) { + const s = new Set(); + for (let i = 1; i <= n; i += 2) { + s.add(i); + } + s.delete(1); + s.add(2); + // 배수들 삭제 + for (let j = 3; j < Math.sqrt(n); j++) { + if (s.has(j)) { + for (let k = j * 2; k <= n; k += j) { + s.delete(k); + } + } + } + return s.size; +}