1. 문제점

프로그래머스 알고리즘 문제풀이 [문자열안에 문자열]

2. 시도해본 것들

for문으로 하나씩 비교해야하나 고민했다.

각각 존재하는지는 확인 가능하겠지만

연속으로 붙어있는지는 어떻게 확인해야할지 고민했다.

3. 해결과정

구글링을 통해 [자바스크립트 문장에서 단어찾기]를 했더니

indexOf()라는 함수가 나왔다.

단순히 노가다해야하는 문제인줄 알았는데,

문장내에서 단어를 찾는 내장함수가 있을 줄이야!

 

4. 알게 된 점

 

나의 문제풀이

function solution(str1, str2) {
    if(str1.indexOf(str2) !== -1){
        return 1;
    } else {
        return 2;
    }
}

indexof 대신 search로 대체할 수 있다.

 

남의 문제풀이

function solution(str1, str2) {
    return str1.includes(str2) ? 1 : 2;
}

includes 특정 문자열을 포함하는지 확인하는 함수로 true, false를 반환한다.

728x90

1. 문제점

프로그래머스 알고리즘 문제풀이 [배열의 유사도]

2. 시도해본 것들

지금 내수준에서는 동일한 값일시 반환하면 되니

이중포문을 써야겠다는 생각이 들어서 바로 실현했다.

3. 해결과정

s1과 s2가 같다면 새로 만든 s3 배열에 추가하고

반환값을 s3의 길이로 하면 되겠구나라고 생각했고 바로 풀 수 있었다.

 

4. 알게 된 점

 

나의 문제풀이

function solution(s1, s2) {
    var s3 = [];
    for (i=0; i<s1.length; i++){
        for(j=0; j<s2.length; j++){
            if(s2[j]===s1[i]){
                s3.push(s2[j]);
            }
        }
    }
    return s3.length;
}

남의 문제풀이

function solution(s1, s2) {
    const intersection = s1.filter((x) => s2.includes(x));
    return intersection.length;
}

filter와 includes를 통해 깔끔하게 정리

분명 배웠던 내용인데 실전에 사용해본적이 없어서

나중에 저렇게 능숙하게 써먹고 싶다. 오늘은 저 내용을 분석해봐야지.

728x90

1. 문제점

프로그래머스 알고리즘 문제풀이 [중앙값 구하기]

2. 시도해본 것들

 

3. 해결과정

배열안에서 중앙값을 구하려면 인덱스 평균값을 구해야 한다.

Math.floor(array.length / 2)

 

배열을 차순정리해야한다.

array.sort((a,b)=>a-b);

 

4. 알게 된 점

 

나의 문제풀이

function solution(array) {
    const mid_num = Math.floor(array.length/2);
    const mid_array = array.sort((a,b) => a-b);
    return mid_array[mid_num];
}

남의 문제풀이

function solution(array) {
  return array.sort((a, b) => a - b)[Math.floor(array.length / 2)];
}
728x90

1. 문제점

프로그래머스 알고리즘 문제풀이 [짝수는 싫어요]

2. 시도해본 것들

처음엔 쭉쭉 써내려갔다.

다음과 같이 코드를 작성했는데 결과값이 극단적이다.

function solution(n) {
    var answer = [];
    var ex = [];
    for (i=1; i<=n; i++){
        ex[i-1] = i;
        if(n%2 == 1){
            answer.push(ex[i-1]);
        }
    }
    return answer;
}

엥......결과값 왜이래?

 

3. 해결과정

어쩔수 없이 코드 하나하나 주석을 달아가며

돌아가는 과정을 파악했다.

앞으로도 막히면 주석 달아가며 확인해야겠다.

 

4. 알게 된 점

 

나의 문제풀이

function solution(n) {
    var answer = [];
    var ex = [];
    for (i=1; i<=n; i++){
        ex[i-1] = i; //ex[0] = 1;
        if(i%2 == 1){ // 10%2 == 1 (홀수일때만) 현재1           n%2 에서 i%2로 변경
            answer.push(ex[i-1]); // ex[0] = 1 (홀수)를 추가함
        }
    }
    return answer;
}

타인의 문제풀이

 

따로 담아낼 배열변수를 만들지 않고 if문도 없이 작성한 코드.

간단하면서 깔끔하다;

function solution(n) {
    var answer = [];
    for (let i = 1; i<=n; i+=2) answer.push(i)
    return answer;
}

 

728x90

1. 문제점

프로그래머스 알고리즘 문제풀이 [문자 반복 출력하기]

2. 시도해본 것들

이전의 문제풀이에서 겪었던 에러를 복습하는 시간인 것 같다.

배열에서 문자

문자에서 배열로 왔다갔다 하는 연습을 했다.

 

3. 해결과정

문자의 배열화 answer.push(myString[i])

배열의 문자화 answer.join('');

그리고 이중for문

 

4. 알게 된 점

드디어 처음으로 혼자 힘으로 이중for문을 썼다!

쓰려고 한건 아닌데 문제를 풀다보니

이거 for문 하나 더 필요하겠는데...? 란 생각이 들어서

즉석 작성했는데 성공!

 

쉬운문제지만 이중for문은 클론코딩할때나 따라쳐봤지

내가 직접 풀 수 있을거란 생각이 안들었는데

갑자기 할 수 있게 되어서 뿌듯하다!😭

 

이중반복을 쓴것은 반복문이 하나 더필요해서 였는데

다른 사람의 문제풀이를 보니 repeat라는 함수를 써서 해결했다.

다음에 참고해야지!

 

나의 문제풀이

function solution(my_string, n) {
    var answer = [];
    var myString = [];
    myString = Array.from(my_string);
    for(i=0; i< my_string.length; i++){
      for(j=0; j <n; j++){
      answer.push(myString[i])
      }
    }
    return answer.join('');
}

다른 사람의 문제풀이

function solution(my_string, n) {
    var answer = '';
    for(let i = 0; i< my_string.length; i++)
        answer+=my_string[i].repeat(n);

    return answer;
}
728x90

1. 문제점

알고리즘 문제풀이 특정문자 제거하기

 

2. 시도해본 것들

배열 myString을 만들고 문자열 my_string을 바로 대입하여 들어가도록 하려했다.

myString=my_string 과 같이 하자 에러가 발생했다.

 

1) 문자열을 바로 배열에 대입하면 에러 발생

VueBackbone: Adding new Model attributes after binding is not supported, provide defaults for all properties

[VueBackbone: 바인딩 후 새 모델 속성 추가가 지원되지 않음, 모든 속성에 대한 기본값 제공]

 

2) 결과값 도출시 a,b,c와 같이 간격이 생기는 문제발생

3. 해결과정

1) 문자열을 바로 배열에 대입하면 에러 발생

바로 문자열을 배열에 넣는 것이 아닌 문자열을 배열로 바꿔주는 함수를 찾았다.

 

Array.from(my_string)

 

2) 결과값 도출시 a,b,c와 같이 간격이 생기는 문제발생

처음에는 다음과 같이 리턴했다.

 

return myString.toString();

 

그러자 결과값이 a,b,c와 같이 나왔다. 배열을 바로 문자열로 바꿔주니 , 가 포함된 것이다.

toString 대신 join('')을 사용하니 해결완료

 

return myString.join('');

 

4. 알게 된 점

문자열을 바로 배열에 대입 못시키는구나 => Array.from(my_string)

배열에서 간격을 없앤 문자열을 만드려면 => return myString.join('');

 

+ 다른사람의 멋진 풀이

function solution(my_string, letter) {
    return my_string.split(letter).join('');
}

 

나의 정답풀이

function solution(my_string, letter) {
    var answer = '';
    var myString = [];
    myString = Array.from(my_string);
    for(i=0; i<myString.length; i++){
        if(myString[i] === letter){
            myString.splice(i, 1);
            i--;
        }
    }
     return myString.join('');
}

 

728x90

1. 문제점

알고리즘 문제풀이 배열자르기

 

2. 시도해본 것들

처음엔 보자마자 와....어려울것 같다

어떻게 하는거지 하면서 생각을 정리했다.

원하는 인덱스부터 원하는 인덱스까지 출력하는거니

for문이겠군. for(i=0; i<numbers.length; i++;) 을 작성하다

문득 시작은 num1 이니까 i=num1

끝은 num2니까 i<=num2로 바꾸면 된다는 것을 알았다.

 

그담엔 푸쉬를 하는거였는데 잘 몰라서 구글링했지만

뭔가 잘 이해가 안되서 A.I에게 질문

 

 

 

3. 해결과정

일단 문제를 이해한 후,

이걸 어떻게 구현할까 몇분간 생각을 하다보면

떠오르는 것이 있다. 일단 막 코드를 쓰다보면 실마리가 보인다.

그래도 안된다면 구글링과 A.I에게 물어보자

 

4. 알게 된 점

문제를 읽자마자 와 이건 어떻게 구현해야하지

나에겐 너무 어려운 것 같은데..

 

겁먹었지만 보다시피 너무 쉬운 문제다.

미리 겁먹었고, 포기할 생각했는데

이렇게 쉬운 문제였다니 자신감이 생기기도 한다.

 

매일 문제를 풀면서

자신감을 키워나가야 겠고 모르는건 구글링과 A.I

728x90

1. 문제점

다른 조들의 발표를 보니 우리조의 모자란 점을 찾을 수 있었다.

우선 레이어드 아키텍처 패턴와 테스트 코드

 

2. 시도해본 것들

먼저 레이어드 아키텍처를 하고 기능 구현을 시작했어야 했는데

다 만들고나서 마지막날 패턴을 만들려고하니 어려웠다.

그래도 팀원끼리 1~2개의 분리를 시킬 수 있었으나 시간이 너무 오래걸려서 포기

 

3. 해결과정

다른조에서 이미 완성한 경험이 있는 동기를 불러와서 강의시킴

 

4. 알게 된 점

레이어드 아키텍처를 쓰면 참 코드가 간결해지는구나

쓸수만 있으면 좋겠다란 생각이 들었다.

 

테스트 코드는 강의에선 쉽게 보였지만

실제 사용한 다른조 코드를 보니 엄두가 나지 않는다.

728x90

+ Recent posts