본문 바로가기

전체 글124

[Level 1] [완전탐색] 최소 직사각형 (JavaScript) 문제 설명 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다. 명함 번호 가로 길이 세로 길이 1 60 50 2 30 70 3 60 30 4 80 40 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때.. 2023. 2. 9.
[Level 2][정렬] H-Index (JavaScript) 문제 설명 H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index입니다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하도록 solution 함수를 작성해주세요. 제한사항 과학자가 발표한 논문의 수는 1편 이상 1,000편 이하입니다. 논문별 인용 횟수는 0회 이상 10,000회 이하입니다. 입출력 예 citations ret.. 2023. 2. 8.
[Tools] 백준 / 프로그래머스를 Github에 연동하기 - 백준허브 플러그인 백준허브 (BaekJoonHub) 의 역할 백준이나 프로그래머스 알고리즘 사이트에서 푼 문제를 자동으로 깃허브에 올려줍니다. 문제풀이를 한 기록을 직접 하지 않고, 깃허브에 자동으로 남겨둘 수 있습니다. LeetHub로 LeetCode를 Github에 연동하고 난 뒤, 찾아보니 백준허브 플러그인도 있어서 세팅해두려고 합니다. LeetCode와 Github를 연동하는 방법은 요 링크에서 확인 가능합니다! https://bolob.tistory.com/entry/Tools-LeetCode%EB%A5%BC-Github%EC%97%90-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0-LeetHub-%ED%94%8C%EB%9F%AC%EA%B7%B8%EC%9D%B8 백준 / 프로그래머스를 Gith.. 2023. 1. 27.
[Tools] LeetCode를 Github에 연동하기 - LeetHub 플러그인 LeetHub의 역할 LeetCode 알고리즘 사이트에서 푼 문제를 자동으로 깃허브에 올려줍니다. 문제풀이를 한 기록을 직접 하지 않고, 깃허브에 자동으로 남겨둘 수 있다는 장점이 있어서 추천하기 위해 포스트를 작성합니다. LeetCode를 Github에 연동하는 방법 1. LeetHub 플러그인 설치 크롬 웹 스토어에서 LeetHub 확장 프로그램을 추가해줍니다. 아래 링크로 들어가서 'Chrome에 추가'를 하고 설치가 완료되면 https://chrome.google.com/webstore/detail/leethub/aciombdipochlnkbpcbgdpjffcfdbggi?ref=producthunt 이렇게 LeetHub가 Chrome에 추가되었다는 팝업이 나타납니다. 2. LeetHub 플러그인에.. 2023. 1. 27.
[JavaScript] e.preventDefault()와 e.stopPropagation()의 차이점 e.preventDefault() VS e.stopPropagation() 자바스크립트 이벤트 리스너에서 e.preventDefault()와 e.stopPropagation() 둘 다 이벤트를 중단하는 메서드이다. 이 둘의 차이점과 어떤 상황에서 사용해야 하는지 정리해 보자. 먼저 이벤트 중단 시에 e.preventDefault()와 e.stopPropagation()가 어떤 역할을 하는지 간단하게 정리해 보았다. e.preventDefault(): 현재 이벤트의 기본 동작을 중단한다. e.stopPropagation(): 이벤트가 상위 DOM으로 전파되지 않도록 막는다. 이 외에도 e.stopImmediatePropagation()과 return false로 이벤트를 중단할 수 있다. e.stopImm.. 2023. 1. 5.
Typescript에서 useState를 props로 넘기는 법 useState로 선언한 setValue를 컴포넌트에 props로 넘기고 싶은데 아래처럼 코드를 짜면 Typescript에서는 타입 경고가 뜬다! // ParentComponent.tsx const [value, setValue] = useState(true); // ... return ( ); // SomeComponent.tsx interface SomeComponentProps { setValue: () => void; } // ... 이 때 저 ParentComponent.tsx의 setValue에 마우스를 올리면 이런 친절한 가이드가 나오는데, 이대로 인터페이스 타입 세팅을 수정해주면 된다. // SomeComponent.tsx import { Dispatch, SetStateAction } f.. 2022. 11. 9.
[Level 1] 크레인 인형뽑기 게임 (JavaScript) 문제 설명 게임 개발자인 "죠르디"는 크레인 인형 뽑기 기계를 모바일 게임으로 만들려고 합니다. "죠르디"는 게임의 재미를 높이기 위해 화면 구성과 규칙을 다음과 같이 게임 로직에 반영하려고 합니다. 게임 화면은 "1 x 1" 크기의 칸들로 이루어진 "N x N" 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 "5 x 5" 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 "1 x 1" 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 .. 2022. 10. 23.
[Level 1] 두 개 뽑아서 더하기 (JavaScript) 문제 설명 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한사항 numbers의 길이는 2 이상 100 이하입니다. 입출력 예 numbers result [2,1,3,4,1] [2,3,4,5,6,7] [5,0,2,7] [2,5,7,9,12] 입출력 예 설명 입출력 예 #1 2 = 1 + 1 입니다. (1이 numbers에 두 개 있습니다.) 3 = 2 + 1 입니다. 4 = 1 + 3 입니다. 5 = 1 + 4 = 2 + 3 입니다. 6 = 2 + 4 입니다. 7 = 3 + 4 입니다. 따라서 [2,3,4,5,6,7] 을 return .. 2022. 10. 23.
[Level 1] 폰켓몬 (JavaScript) 문제 설명 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. 홍 박사님 연구실의 폰켓몬은 종류에 따라 번호를 붙여 구분합니다. 따라서 같은 종류의 폰켓몬은 같은 번호를 가지고 있습니다. 예를 들어 연구실에 총 4마리의 폰켓몬이 있고, 각 폰켓몬의 종류 번호가 [3번, 1번, 2번, 3번]이라면 이는 3번 폰켓몬 두 마리, 1번 폰켓몬 한 마리, 2번 폰켓몬 한 마리가 있음을 나타냅니다. 이때, 4마리의 폰켓몬 중 2마리를 고르는 방법은 다음과 같이 6가지가 있습니다. 첫 번째(3번), 두 번째(1번) 폰켓몬을 선택 첫 번째(3번), 세 번째(2번) 폰켓몬을 선택 첫.. 2022. 10. 23.