Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

1259 #74

Open
wants to merge 9 commits into
base: recently
Choose a base branch
from
Open

1259 #74

wants to merge 9 commits into from

Conversation

4BFC
Copy link
Member

@4BFC 4BFC commented Dec 18, 2024

#️⃣ Number

  • problem Number
  • B/No.1

🏆정답여부

  • 정답

🌐문제 링크

🔗 1259

🔐풀이 과정

🔥Point
원본과 반전시킨 두 값을 따로 관리해야한다고 생각했다. 이를 유념하면서 코드를 구현했다.

📌Description

  • 어느 정도 map이나 forEach와 같은 루핑으로 2차원 배열, 1차원 문자열에 각 객체 요소에 접근하는 것은 어느 정도 이해하고 숙달 된 듯한다. 그리고 해당 요소를 가지고 split, sort, reverse, trim, join 함수를 가지고 문자열을 조합하는 것 또한 이해하고 있다.

  • filter와 활용

    • 나는 filter 문제를 많이 접하지 않았다. 다만 filter를 프로젝트나, 실무에서 많이 사용했기 때문에 이를 사용하는 것에 대한 거부함이나 낯설음은 없다. 다만, filter를 심도있게 본적, 심층있는 활용 경험이 없어 이번 기회에 한번 살펴봤다. 내가 해당 문제를 풀 때 당혹 스러웠던 것은 주어진 조건에 0이 있을 경우 이를 배제시키는 것인데 순간 stack을생각했고 pop을사용하려 했다. 하지만 stack의 구조가 아닌 현재에서 filter를 어떻게 활용해야 할지 우왕좌왕했다.
    • filter란 무엇인가

      • filter는 배열의 요소를 조건에 따라 선택적으로 유지하거나 제거할 수 있다. 기본적인 filter의 구조는 다음과 같다.
        const numbers = [1, 2, 3, 4, 5, 6];
        const evenNumbers = numbers.filter((num) => num % 2 === 0);
        console.log(evenNumbers); // [2, 4, 6]
      
      • filter의 형태는 map이나 forEach와 매우 유사하다. 해당 배열의 요소를 받아와 조건에 부합(true)한 경우에 true라고 인식한 값만 반환을 한다. 즉, false인 경우에는 이를 무시하고 반환하지 하지 않는다. 물론 반환되는 값은 배열이다.
      • 이를 활용한 예시는 다음과 같다.
      • include
          const words = ["apple", "banana", "cherry", "date"];
          const wordsWithA = words.filter((word) => word.includes("a"));
          console.log(wordsWithA); // ['apple', 'banana', 'date']
        
      • Object
          const people = [
            { name: "Alice", age: 17 },
            { name: "Bob", age: 20 },
            { name: "Charlie", age: 18 },
          ];
          const adults = people.filter((person) => person.age >= 18);
          console.log(adults);
          // [
          //   { name: 'Bob', age: 20 },
          //   { name: 'Charlie', age: 18 }
          // ]
        
      • 다차원 배열
         const nested = [
           [1, 2, 3],
           [4, 5, 6],
           [7, 8, 9],
         ];
         
         const filteredNested = nested.map((arr) => arr.filter((num) => num % 2 === 0));
         
         console.log(filteredNested);
         // [
         //   [2],
         //   [4, 6],
         //   [8]
         // ]
        
      • indexOf
          const numbers = [1, 2, 2, 3, 4, 4, 5];
          const uniqueNumbers = numbers.filter(
            (num, index, array) => array.indexOf(num) === index
          );
          console.log(uniqueNumbers); // [1, 2, 3, 4, 5]
        
      • 여기서 주의 깊게 봐야할 것은 indexOf의 매개변수이다. numindex는 map에서 많이 활용했던 방식이지만 array같은 경우 처음보는 매개변수이다. 이는 해당 실행 중인 배열 전체이다. 찾아보니 이는 map이나 forEach, reduce와 같은 함수에서도 존재하는 매개변수이다. 이를 활용하면 맴버 변수로 배열의 크기를 정의하거나 할 수 있을 듯 하다.

🔔Notice

4BFC and others added 8 commits September 10, 2024 13:26
* 🔀: 2750 retry(1) (#12)

* 🚩: 문제를 풀기위한 세팅

* 🚩: PR 템플릿 생성 문제로 파일 삭제

* 🚩: bubble 정렬 적용 및 정렬 확인

* 🚩: 배열 중복제거 로직 구현 오답

* 🌱 : PR 템플릿 재생성

* 🐛: sort와 filter 그리고 indexOf 사용해서 문제 해결 시도, 오답

* 🐛: shift와 trim을 사용해서 문제 해결, pop으로 문제를 시도 했으나 오답 왜인지 아직 명확하지 않다.

* 🚩: 주석제거

* 🔀: 1181 (#14)

* 🌱: 알고리즘 개념을 위한 issue templates 생성

해당 코드는 Github에서 직접 수정

* 🌱: main 브렌치 환경 초기 세팅을 위한 커밋

* 🚩: shift와 sort를 사용해서 정렬 시도

* 🚩: sort의 오름차순 정렬 설정을 통해서 배열 길이 순으로 정렬 시도

* 🚩: sort 비교함수를 if문으로 알파벳, 문자열 길이 기준으로 정렬이 될 수 있게 문제 해결

* 🔀: 10798 (#16)

* 🌱: 알고리즘 개념을 위한 issue templates 생성

해당 코드는 Github에서 직접 수정

* 🌱: main 브렌치 환경 초기 세팅을 위한 커밋

* 🚩: 이중 for문을 사용해서 문제 해결 시도

* 🐛: 첫 번째 예제 입력1은 맞지만 예제 입력2는 오답

* 🐛: 백준은 정답이지만 vsc에서 출력되는 오답과 풀리지 않은 의문

* 🔀: 11650 (#19)

* 🌱: 알고리즘 개념을 위한 issue templates 생성

해당 코드는 Github에서 직접 수정

* 🌱: main 브렌치 환경 초기 세팅을 위한 커밋

* 🚩: 이중 for문을 사용해서 문제 시도

* 🚩: sort 조건문을 사용해서 문제 시도 오답

* 🚩: x,y 정렬 순서 및 기준을 수정해서 문제 시도 정답

* 🔀: 2839 (#30)

* 🌱: 알고리즘 개념을 위한 issue templates 생성

해당 코드는 Github에서 직접 수정

* 🌱: main 브렌치 환경 초기 세팅을 위한 커밋

* 🚩: 문제에 주어진 조건들을 대입해서 문제를 풀어내지만 소수점을 컨트롤하는 부분이 미흡

* 🚩: 원하는 형태로 순환을 했지만 결과는 의도와 달리 나온다.

* 🚩: 문제의 조건 뿐만 아니라 예상출력의 조건 또한 잘 파악을 해야한다.

* 🚩: 여기서 조건 하나만 변경하면 원하는 정답을 도출 할 수 있다. 수정 필요

* 🚩: 여기서 조건 하나만 변경하면 원하는 정답을 도출 할 수 있다. 수정 필요 및 분석 필요

* 🔀: 2839 retry(1) (#32)

* 🌱: 알고리즘 개념을 위한 issue templates 생성

해당 코드는 Github에서 직접 수정

* 🌱: main 브렌치 환경 초기 세팅을 위한 커밋

* 🚩: 문제에 주어진 조건들을 대입해서 문제를 풀어내지만 소수점을 컨트롤하는 부분이 미흡

* 🚩: 원하는 형태로 순환을 했지만 결과는 의도와 달리 나온다.

* 🚩: 문제의 조건 뿐만 아니라 예상출력의 조건 또한 잘 파악을 해야한다.

* 🚩: 여기서 조건 하나만 변경하면 원하는 정답을 도출 할 수 있다. 수정 필요

* 🚩: 여기서 조건 하나만 변경하면 원하는 정답을 도출 할 수 있다. 수정 필요 및 분석 필요

* 🐛: 예제 입력 5번으로 오답

* 🐛: 마지막 조건문을 변경함으로 예제 입력 5번 통과, 오답

* 🐛: 코드 수정으로 예제 입력 4번에서 오답 후 해결 단, 예제 입력 5번을 명확하게 이유 설명 필요. 정답

* 🚩: 문제의 기본 조건식의 틀 생성

* 🚩: 예시입력1번에 맞는 코드를 작성, 예시입력1번 통과

* 🚩: 예제 입력5를 제외한 나머지 예제 입력 통과

* 🚩: 예제입력 5번과 2번 불통과 문제 해결

* 🚩: 오답

* 🚩: 불필요하게 result갑이 증가된다. 이에 코드의 가독성이 떨어진다.

* 🔀: 2839 retry(2) (#35)

* 🌱: 알고리즘 개념을 위한 issue templates 생성

해당 코드는 Github에서 직접 수정

* 🌱: main 브렌치 환경 초기 세팅을 위한 커밋

* 🚩: 문제에 주어진 조건들을 대입해서 문제를 풀어내지만 소수점을 컨트롤하는 부분이 미흡

* 🚩: 원하는 형태로 순환을 했지만 결과는 의도와 달리 나온다.

* 🚩: 문제의 조건 뿐만 아니라 예상출력의 조건 또한 잘 파악을 해야한다.

* 🚩: 여기서 조건 하나만 변경하면 원하는 정답을 도출 할 수 있다. 수정 필요

* 🚩: 여기서 조건 하나만 변경하면 원하는 정답을 도출 할 수 있다. 수정 필요 및 분석 필요

* 🐛: 예제 입력 5번으로 오답

* 🐛: 마지막 조건문을 변경함으로 예제 입력 5번 통과, 오답

* 🐛: 코드 수정으로 예제 입력 4번에서 오답 후 해결 단, 예제 입력 5번을 명확하게 이유 설명 필요. 정답

* 🚩: 문제의 기본 조건식의 틀 생성

* 🚩: 예시입력1번에 맞는 코드를 작성, 예시입력1번 통과

* 🚩: 예제 입력5를 제외한 나머지 예제 입력 통과

* 🚩: 예제입력 5번과 2번 불통과 문제 해결

* 🚩: 오답

* 🚩: 불필요하게 result갑이 증가된다. 이에 코드의 가독성이 떨어진다.

* 🔀: Algorithm/dynamic programming (#40)

* 🌱: 알고리즘 개념을 위한 issue templates 생성

해당 코드는 Github에서 직접 수정

* 🌱: main 브렌치 환경 초기 세팅을 위한 커밋

* 🌱:  README을 수정

GitHub에서 직접 수정한 issue 입니다.

* 🌱: printer.js 파일 수정

Github에서 수정한 커밋입니다.

* 🌱:  PR템플릿을 수정

Github에서 수정한 커밋입니다.

* 🌱:  PR-TEMPLATE를 수정

Github에서 수정한 커밋입니다.

* 🌱: pr-template 수정

Github에서 수정한 커밋입니다.

* 🌱: pr-template 수정

Github에서 수정된 커밋입니다.

* 🌱: issue templates 수정

Github에서 작성된 커밋입니다.

* 🌱: pr-template 수정

Github에서 수정된 커밋입니다.

* 🌱:  README을 수정

Github에서 수정한 커밋입니다.

* 🚩: DynamicProgramming을 학습하고 정리

* 🚩: 정리한 글의 파일명 변경

* 🚩: 공부 정리 글을 위한 템플릿 생성

* 🚩: 문자열의 길이로 sort를 활용해서 정렬하는 방법은 알겠으나, 중복값 제거와 1차적인 정렬 이후 정렬된 값 기준으로 재정렬하는 방법에 대해 문제를 풀어내지 못했음.

* 🚩: 중복 제거를 new Set을 통해 해결하고 localCompare를 사용했지만 이 역할이 정확히 무엇인지 알아볼 필요가 있다.

* 🚩: 배열을 map으로 순회해서 stack의 구조를 구성하려 했으나 index 값을 원하는 데로 컨트롤하기에 어려움이 있다.

* 🚩: 문제를 풀어내는 방식을 좀 더 간단하게 생각할 필요가 있다. 너무 stack에만 집중했다.

* 🚩: 구조분해 할당을  간소화한 구조로 활용과 사용을 해보았다.

* 🔧: test하기 위한 스크립트와 환경을 구성

* 🚩: 코드 분석 및 정리

* 🔀: 16173 (#47)

* 🌱: 알고리즘 개념을 위한 issue templates 생성

해당 코드는 Github에서 직접 수정

* 🌱: main 브렌치 환경 초기 세팅을 위한 커밋

* 🌱:  README을 수정

GitHub에서 직접 수정한 issue 입니다.

* 🌱: printer.js 파일 수정

Github에서 수정한 커밋입니다.

* 🌱:  PR템플릿을 수정

Github에서 수정한 커밋입니다.

* 🌱:  PR-TEMPLATE를 수정

Github에서 수정한 커밋입니다.

* 🌱: pr-template 수정

Github에서 수정한 커밋입니다.

* 🌱: pr-template 수정

Github에서 수정된 커밋입니다.

* 🌱: issue templates 수정

Github에서 작성된 커밋입니다.

* 🌱: pr-template 수정

Github에서 수정된 커밋입니다.

* 🌱:  README을 수정

Github에서 수정한 커밋입니다.

* 🚩: 문자열의 길이로 sort를 활용해서 정렬하는 방법은 알겠으나, 중복값 제거와 1차적인 정렬 이후 정렬된 값 기준으로 재정렬하는 방법에 대해 문제를 풀어내지 못했음.

* 🚩: 중복 제거를 new Set을 통해 해결하고 localCompare를 사용했지만 이 역할이 정확히 무엇인지 알아볼 필요가 있다.

* 🚩: 배열을 map으로 순회해서 stack의 구조를 구성하려 했으나 index 값을 원하는 데로 컨트롤하기에 어려움이 있다.

* 🚩: 문제를 풀어내는 방식을 좀 더 간단하게 생각할 필요가 있다. 너무 stack에만 집중했다.

* 🌱:  stdin을 수정

Github에서 수정한 커밋입니다.

* 🌱:  printer.js를 수정

Github에서 수정한 커밋입니다.

* 🌱: printer.js를 수정

Github에서 수정한 커밋입니다.

* 🌱:  test.js를 수정

Github에서 수정한 커밋입니다.

* 🌱:  test.js를 수정

Github에서 수정한 커밋입니다.
Github에서 수정한 커밋입니다.
Github에서 수정한 커밋입니다.
@4BFC 4BFC added baekjoon baekjoon javascript javascript 구현 Type labels Dec 18, 2024
@4BFC 4BFC self-assigned this Dec 18, 2024
@4BFC 4BFC added this to the Baekjoon milestone Dec 18, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
baekjoon baekjoon javascript javascript 구현 Type
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant