전체 글 120

[프로그래머스] '정수 삼각형' 알고리즘 풀이 - Python

Contents 문제 설명 [제한사항] [입출력 예] 알고리즘 분석 [나의 풀이] [Most 1 의 풀이] 문제 설명 위와 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다. 삼각형의 정보가 담긴 배열 triangle이 매개변수로 주어질 때, 거쳐간 숫자의 최댓값을 return 하도록 solution 함수를 완성하세요. 제한사항 삼각형의 높이는 1 이상 500 이하입니다. 삼각형을 이루고 있는 숫자는 0 이상 9,999 이하의 정수입니다. 입출력 예 triangle result [[7], [3..

[프로그래머스] '이중우선순위큐' 알고리즘 풀이 - Python

Contents 문제 설명 [제한사항] [입출력 예] 알고리즘 분석 [나의 풀이] 문제 설명 이중 우선순위 큐는 다음 연산을 할 수 있는 자료구조를 말합니다. 명령어 수신 탑(높이) --> 오타인듯 I 숫자 큐에 주어진 숫자를 삽입합니다. D 1 큐에서 최댓값을 삭제합니다. D -1 큐에서 최솟값을 삭제합니다. 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현해주세요. 제한사항 operations는 길이가 1 이상 1,000,000 이하인 문자열 배열입니다. operations의 원소는 큐가 수행할 연산을 나타냅니다. 원소는 “명령어 데이터” 형식..

[카카오 기출문제] '수식 최대화' 문제 풀이 - Python

Contents 문제 설명 [제한사항] [입출력 예] 알고리즘 분석 [나의 풀이] [Most 1 의 풀이] 문제 설명 IT 벤처 회사를 운영하고 있는 라이언은 매년 사내 해커톤 대회를 개최하여 우승자에게 상금을 지급하고 있습니다. 이번 대회에서는 우승자에게 지급되는 상금을 이전 대회와는 다르게 다음과 같은 방식으로 결정하려고 합니다. 해커톤 대회에 참가하는 모든 참가자들에게는 숫자들과 3가지의 연산문자(+, -, *) 만으로 이루어진 연산 수식이 전달되며, 참가자의 미션은 전달받은 수식에 포함된 연산자의 우선순위를 자유롭게 재정의하여 만들 수 있는 가장 큰 숫자를 제출하는 것입니다. 단, 연산자의 우선순위를 새로 정의할 때, 같은 순위의 연산자는 없어야 합니다. 즉, + > - > * 또는 - > * >..

[카카오 기출문제] '튜플' 문제 풀이 - Python

Contents 문제 설명 [제한사항] [입출력 예] 알고리즘 분석 [나의 풀이] [Most 1 의 풀이] 문제 설명 셀수있는 수량의 순서있는 열거 또는 어떤 순서를 따르는 요소들의 모음을 튜플(tuple)이라고 합니다. n개의 요소를 가진 튜플을 n-튜플(n-tuple)이라고 하며, 다음과 같이 표현할 수 있습니다. (a1, a2, a3, ..., an) 튜플은 다음과 같은 성질을 가지고 있습니다. 중복된 원소가 있을 수 있습니다. ex : (2, 3, 1, 2) 원소에 정해진 순서가 있으며, 원소의 순서가 다르면 서로 다른 튜플입니다. ex : (1, 2, 3) ≠ (1, 3, 2) 튜플의 원소 개수는 유한합니다. 원소의 개수가 n개이고, 중복되는 원소가 없는 튜플 (a1, a2, a3, ..., a..

[카카오 기출문제] '키패드 누르기' 문제 풀이 - Python

Contents 문제 설명 [제한사항] [입출력 예] 알고리즘 분석 [나의 풀이] [Most 1 의 풀이] 문제 설명 스마트폰 전화 키패드의 각 칸에 다음과 같이 숫자들이 적혀 있습니다. 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 이용해서 숫자만을 입력하려고 합니다. 맨 처음 왼손 엄지손가락은 * 키패드에 오른손 엄지손가락은 # 키패드 위치에서 시작하며, 엄지손가락을 사용하는 규칙은 다음과 같습니다. 엄지손가락은 상하좌우 4가지 방향으로만 이동할 수 있으며 키패드 이동 한 칸은 거리로 1에 해당합니다. 왼쪽 열의 3개의 숫자 1, 4, 7을 입력할 때는 왼손 엄지손가락을 사용합니다. 오른쪽 열의 3개의 숫자 3, 6, 9를 입력할 때는 오른손 엄지손가락을 사용합니다. 가운데 열의 4개의 숫자 2,..

[카카오 기출문제] '크레인 인형뽑기' 알고리즘 풀이 - Python

Contents 문제 설명 [제한사항] [입출력 예] 알고리즘 분석 [나의 풀이] [Most 1 의 풀이] [나의 풀이(수정본)] 문제 설명 게임 화면은 1 x 1 크기의 칸들로 이루어진 N x N 크기의 정사각 격자이며 위쪽에는 크레인이 있고 오른쪽에는 바구니가 있습니다. (위 그림은 5 x 5 크기의 예시입니다). 각 격자 칸에는 다양한 인형이 들어 있으며 인형이 없는 칸은 빈칸입니다. 모든 인형은 1 x 1 크기의 격자 한 칸을 차지하며 격자의 가장 아래 칸부터 차곡차곡 쌓여 있습니다. 게임 사용자는 크레인을 좌우로 움직여서 멈춘 위치에서 가장 위에 있는 인형을 집어 올릴 수 있습니다. 집어 올린 인형은 바구니에 쌓이게 되는 데, 이때 바구니의 가장 아래 칸부터 인형이 순서대로 쌓이게 됩니다. 다음..

[Nomad Coder] 바닐라 JS로 크롬 앱 만들기 - 완성

강의에서 들은 내용을 응용해서 사이트를 만들어 봤다. 모르거나 강의에 나오지 않는 부분은 구글링을 통해서 보완했다. 완성작 디자인을 보기 좋게하기 위해서 각각 스크립트들의 위치를 계속 조정하면서 만들었다. Input Box는 보기 안좋아서 hidden으로 숨겼다. 폰트는 여러개를 사용해봤다. 인사말은 느낌있게 필기체를 사용해봤다. 할 일 리스트도 동일 "X" 표시가 맘에 안들어서 빼고 싶었는데.... 귀찮아서 일단은 놔두기로 했다. 나중에 바꿀 예정. 그리고 리스트의 숫자가 많아지면 보기 지저분해서 스크롤을 만들어줬다. 그 외에 랜덤 배경화면이라서 새로고침하면 총 4개의 배경화면 중에 1개가 랜덤으로 나온다. 근데 나오는 것만 계속 나오는거 같은데...

[Nomad Coder] 바닐라 JS로 크롬 앱 만들기 - 파트 2

4. 할 일 리스트 할 일 리스트는 정리하는데 좀 어려웠다. 로컬 스토리지에 데이터 저장, 요소 삭제, 요소 추가, 화면에 출력, 이벤트 발생시 처리 등 신경쓸게 많았다. const toDoForm = document.querySelector(".js-toDoForm"), toDoInput = toDoForm.querySelector("input"), // input 받은 데이터를 저장한다. toDoList = document.querySelector(".js-toDoList"); // 입력 받은 데이터 리스트를 저장한다. const TODOS_LS = "toDos"; let toDos = []; // 리스트를 지운다 function deleteToDo(event){ // event의 부모에 대한 정보를..

[Nomad Coder] 바닐라 JS로 크롬 앱 만들기 - 파트 1

목차 1. Toggle 2. 시계 3. 유저 이름 입력 4. 할 일 리스트 5. 그림 백그라운드 6. 현재 날씨 출력 1. Toggle 만약 문자를 클릭하면 색이 바뀌고 다시 클릭하면 원래 색으로 돌아가도록 하고 싶다면 어떻게 해야할까? const CLICKED_CLASS = "clicked" function handleClick1(){ // contains(값) : 배열 혹은 객체내에 값의 존재 여부를 확인 const hasClass = title.classList.contains(CLICKED_CLASS) if (hasClass){ // hasClass가 참이면, 즉 CLICKED_CLASS가 있을 경우 title.classList.remove(CLICKED_CLASS) // CLICKED_CLASS..

[Nomad Coders] 바닐라 JS로 크롬 앱 만들기 - 기본기

노마드 코더에서 무료강의인 바닐라 JS로 크롬 앱 만들기! 해당 강의는 아래의 사이트에서 찾을 수 있다. https://nomadcoders.co/ 바닐라 JS란? - 간단하게 말하자면 그냥 순수한 자바스크립트이다. 즉, 라이브러리가 없는 자바스크립트이다. 들어가기 앞서 기본기 정리 알아두면 좋은 기본적인 정보들을 확인해보자. [변수의 종류] let(block-scoped) : 재할당 가능, 재선언 불가능 let name = "GilDong"; name = "Amuge"; // 재할당 가능 const(block-scoped) : 재할당 불가능, 재선언 불가능 const name = "GilDong"; var(function-scoped) : 재할당 가능, 재선언 가능 var name = "GilDong"..