약간 소 뒷걸음질 치다가 쥐 잡은 격으로 풀었다. parseInt가 잘 이해가 안 되므로 복습이 필요.
function solution(n) {
var answer = 0;
let threeJ = n.toString(3)
// 3진법으로 변경
let tempArr = threeJ.split("").reverse()
// 문제 변경 사항처럼 reveser()이용해서 뒤집음
let tempNumber = tempArr.join("")
// 이후 str 값이지만 합침, "0021"이렇게
answer = Number.parseInt(tempNumber, 3)
// 다시 Number로 교체. 3진법이므로 parseInt에 3 집어 넣음
return answer;
}
아마 Number가 10진법으로 바꿔준 역할을 한게 아닐까 합리적인 고민을 하며 일단 마친다..
-> 다시 알아보니 parseInt가 10진법으로 바꿔준거였음.
행렬처럼 2차원 배열 나오면 쥐약이다. 일단 패스.
사고를 반대로 했더니 풀렸다. 연속된 숫자가 같으면 빼주는게 아니라 오히려 다음숫자와 같지 않다면 새 배열에 집어 넣어준다고 풀었더니 금방 풀렸다.
function solution(arr)
{
var answer = [];
for(let i=0; i < arr.length; i++){
if(arr[i] != arr[i+1]){
answer.push(arr[i])
}
}
return answer;
}
function solution(numbers) {
var answer = [];
for (let i = 0; i < numbers.length-1; i++){
for(let j = i +1; j < numbers.length; j++){
// 이중 for문으로 토너먼트 형식으로 만듦
let temp = numbers[i] + numbers[j]
// 두 수의 합을 temp에 담음
if(answer.indexOf(temp) == -1){
// 요소가 indexOf로 찾았을 때 없으면 추가해라
answer.push(temp)
// temp를 answer에 push
}
}
answer.sort((a,b)=>a-b)
// answer 오름차순 정렬
}
return answer;
}
function solution(answers) {
const one = [1, 2, 3, 4, 5]
const two = [2,1,2,3,2,4,2,5]
const three = [3,3,1,1,2,2,4,4,5,5]
// 먼저 찍는 패턴을 파악
const results = [0, 0, 0]
//맞을 때마다 하나씩 올라가게(one, two, three의 수포자들)
for(let i =0; i < answers.length; i++) {
if(one[i % 5] === answers[i]) results[0]++;
if(two[i % 8] === answers[i]) results[1]++;
if(three[i % 10] === answers[i]) results[2]++;
// % 5, 8, 10 : 각 찍는 방식의 대한 length
}
const maxNum = Math.max(...results);
let answer = [];
for (let i = 0; i< results.length; i++){
if(maxNum === results[i]) {
answer.push(i + 1)
// 가장 많이 맞춘 사람의 result를 push로 늘려줌
}
}
return answer
}
function solution(strings, n) {
let answer = strings.sort((a, b) => {
// a, b를 sort 하는데
if(a[n] > b[n]) return 1;
if(a[n] < b[n]) return -1;
// a[n]과 b[n]을 서로 비교
if(a[n] === b[n]){
// 같으면 a, b를 비교
if(a>b) return 1;
if(a<b) return -1;
return 0;
// 완전히 같은 것
}
});
return answer;
}
function solution(s) {
var answer = '';
answer = s.split('').sort().reverse().join('')
// split : str->arr, sort : 정렬(자체적으로 대문자와 소문자별로 정렬), reverse : 배열 내림차순 정렬, join : arr->str
console.log(answer)
return answer;
}
허무하게 구글링으로 풀렸다. sort기능이 대문자가 자동으로 뒤로 간다는건 몰랐다.
검색해서 풀다보니 어쩌다 답을 찾아 풀어버렸다. 함수가 나눠진다는 것을 잘 유의하고 풀어보자.
function solution(nums) {
let answer = 0
for(let i=0; i < nums.length-2; i++){
for (let j = i +1; j < nums.length-1; j++){
for (let k = j +1; k < nums.length; k++){
if(division(nums[i] + nums[j] + nums[k])===2){
answer += 1
// 이미 세 수를 더했는데 소수인 2가 나오면 바로 answer 더해줌
}
}
}
}
return answer;
}
//함수를 두 개써야 함. 즉 소수를 구하는 함수 하나, 기존 3수를 더하는 함수 하나.
function division(num){
let count = 0
for (let i = 0; i <= num; i++){
if (num % i === 0){
count += 1
// 소수 구하는 for문 방식
}
}
return count
}
function solution(s) {
var answer = 0;
s = s.replace(/zero/g, 0)
s = s.replace(/one/g, 1)
s = s.replace(/two/g, 2)
s = s.replace(/three/g, 3)
s = s.replace(/four/g, 4)
s = s.replace(/five/g, 5)
s = s.replace(/six/g, 6)
s = s.replace(/seven/g, 7)
s = s.replace(/eight/g, 8)
s = s.replace(/nine/g, 9)
answer = Number(s)
return answer;
}
replace를 이렇게 정규식과 반복해서 쓸 수도 있구나...
전반적으로 못 풀고 넘어간 문제나 답을 참고한 것이 과반이 넘는다. 난이도가 중 정도인데 너무 어렵다.. 문제 조차 이애가 안 되어서 일단 쉬운거 위주로 공부한 다음 다시 도 전해야겠다.