https://programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 "콘"은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 programmers.co.kr 해설 : '(' 과 ')'의 개수가 같다면 이를 '균형잡힌 괄호 문자열' 이라고 부른다. 또한, 균형잡힌 괄호 문자열이면서 '(' 과 ')'의 열고 닫는 짝이 맞다면 이를 '올바른 괄호 문자열' 이라고 부른다. 균형잡힌 괄호 문자열이 주어질 때 이를 올바른 괄호 문자열로 변환해서 반환하면 된다. 풀이 : 프로그래머스에서 이 문제를 level 2로 판단하였는데 개인..
https://programmers.co.kr/learn/courses/30/lessons/72411 코딩테스트 연습 - 메뉴 리뉴얼 레스토랑을 운영하던 스카피는 코로나19로 인한 불경기를 극복하고자 메뉴를 새로 구성하려고 고민하고 있습니다. 기존에는 단품으로만 제공하던 메뉴를 조합해서 코스요리 형태로 재구성해서 programmers.co.kr 해설 : 손님의 단품요리 주문내역 orders와 코스로 구성할 가짓수 course 배열이 주어질 때, 각 코스마다 어떤 조합으로 코스를 구성해야 가장 잘 팔릴지 선택하는 문제이다. 손님이 단품으로 주문한 메뉴들의 조합을 통해 어떤 코스가 가장 인기있을지 유추해야 한다. 풀이 : 각 손님의 주문내역에서 가능한 요리의 조합을 list에 전부 append한다. 이후 C..
https://programmers.co.kr/learn/courses/30/lessons/77485 코딩테스트 연습 - 행렬 테두리 회전하기 6 6 [[2,2,5,4],[3,3,6,6],[5,1,6,3]] [8, 10, 25] 3 3 [[1,1,2,2],[1,2,2,3],[2,1,3,2],[2,2,3,3]] [1, 1, 5, 3] programmers.co.kr 해설 : 1부터 row * column의 값으로 채워진 2차 행렬과 회전시킬 테두리의 x1,y1,x2,y2 좌표가 주어질 때, 이 행렬의 테두리를 회전시키며 변경된 값 중에 가장 작은 값을 찾는 문제이다 풀이 : 행렬을 회전시킬 때 테두리 4개에 대해 회전하는 로직을 구현하였다. 이 때, 겹치는 부분인 각 꼭짓점은 따로 저장을 하여 겹치는 문제..
https://programmers.co.kr/learn/courses/30/lessons/12973 코딩테스트 연습 - 짝지어 제거하기 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙 programmers.co.kr 해설 : 문자열 s가 주어질 때 연속된 문자 2개가 나올 경우 이를 짝지어 제거한다. 이 과정을 반복하면 최종적으로 문자열을 빈 문자열로 만들 수 있는지 찾는 문제이다. 풀이 : stack을 사용하면 쉽게 해결할 수 있는 문제이다. 문자열 s의 앞에서부터 stack에 넣으며, 넣을 때마다 stack의 top과 비교하고 같으면 stack에서 빼준다. ..
https://programmers.co.kr/learn/courses/30/lessons/1845 코딩테스트 연습 - 폰켓몬 당신은 폰켓몬을 잡기 위한 오랜 여행 끝에, 홍 박사님의 연구실에 도착했습니다. 홍 박사님은 당신에게 자신의 연구실에 있는 총 N 마리의 폰켓몬 중에서 N/2마리를 가져가도 좋다고 했습니다. programmers.co.kr 해설 : 중복이 있는 수 배열이 주어진다. 이 때, 중복이 아닌(겹치지 않는) 숫자를 고르는 경우의 수를 출력하면 된다. 풀이 : 쉬운 문제이다. 중복을 제거하기 위해 수 배열을 set으로 처리해주었고 이 set의 길이와 전체 배열의 길이를 2로 나눈 값 중 작은 수를 출력하면 된다. 12def solution(nums): return min(len(set(n..
npm이란 무엇일까? npm은 Node Packaged Manager의 약자로 node.js로 만들어진 package를 관리해주는 툴이다. node.js에서 사용할 수 있는 모듈들을 패키지화하여 모아둔 저장소 역할을 하며 설치 및 관리를 수행할 수 있는 CLI를 제공한다. npm 설치방법 npm i 명령어를 통해 쉽게 패키지들을 설치할 수 있다. 설치에는 local, global 두 가지 종류가 있는데 디폴트는 local이다. 설치시에 -g옵션을 추가하여 global로 설치할 수 있는데 이는 모든 프로젝트에서 공통 사용이 가능하다. package.json package.json 에는 사용하고 있는 패키지들의 명세가 작성되어 있기 때문에 프로젝트를 다른 사람에게 공유하고 싶다면 package.json을 공..
REST의 개념 REST란 REST의 정의 “Representational State Transfer” 의 약자 자원을 이름(자원의 표현)으로 구분하여 해당 자원의 상태(정보)를 주고 받는 모든 것을 의미한다. 즉, 자원(resource)의 표현(representation) 에 의한 상태 전달 자원(resource)의 표현(representation) 자원: 해당 소프트웨어가 관리하는 모든 것 -> Ex) 문서, 그림, 데이터, 해당 소프트웨어 자체 등 자원의 표현: 그 자원을 표현하기 위한 이름 -> Ex) DB의 학생 정보가 자원일 때, ‘students’를 자원의 표현으로 정한다. 상태(정보) 전달 데이터가 요청되어지는 시점에서 자원의 상태(정보)를 전달한다. JSON 혹은 XML를 통해 데이터를 ..
https://programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 해설: 그래프 vertex사이의 간선정보가 주어질 때 1번째 노드에서 가장 멀리 떨어져있는 노드가 몇 개인지를 return하면 된다. 풀이: vertex사이의 간선정보를 통해 n개의 노드 사이에 연결정보를 담은 list를 새로 만든다. 이 list를 BFS로 전체탐색하여 이미 탐색한 node의 정보를 1번노드로부터의 거리로 초기화시켜준다. 모든 탐색을 마치고 거리정보가 담긴 list의 max을 카운팅해주면 된다. 1234567891..
https://programmers.co.kr/learn/courses/30/lessons/43238 코딩테스트 연습 - 입국심사 n명이 입국심사를 위해 줄을 서서 기다리고 있습니다. 각 입국심사대에 있는 심사관마다 심사하는데 걸리는 시간은 다릅니다. 처음에 모든 심사대는 비어있습니다. 한 심사대에서는 동시에 한 programmers.co.kr 해설 : 입국심사관들이 입국심사하는데 걸리는 시간들이 담긴 배열과 입국심사를 받아야 하는 사람의 수 n이 주어질 때, 모든 사람을 입국심사하는데에 걸리는 최소 시간을 찾는 문제이다. 풀이 : 이분 탐색(Binary Search) 문제이다. 너무 어려웠다. 처음 봤을 땐 이분 탐색을 사용해야겠다는 생각은 1도 들지 않았고 그리디, 또는 브루트포스를 사용하여 모든 경..