일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 2589
- 설탕 배달
- 스프링
- 문자열 압축
- 쓰레드 풀
- 양꼬치
- 프로그래머스
- 완도산회
- 알고리즘
- 1로 만들기
- HTTP API
- dp
- Servlet
- 다이나믹 프로그래밍
- 동적 프로그래밍
- 호유동
- mvc
- 백준
- 서블릿
- Spring
- 맛집
- 2638
- BFS
- 고모네 콩탕
- 2839
- 포두부 보쌈
- 2020 KAKAO BLIND
- 투어
- 스프링 MVC
- 맛집 투어
- Today
- Total
목록분류 전체보기 (157)
프로그래밍 공방
문제 총 8개의 톱니를 가지고 있는 톱니바퀴 4개가 아래 그림과 같이 일렬로 놓여져 있다. 또, 톱니는 N극 또는 S극 중 하나를 나타내고 있다. 톱니바퀴에는 번호가 매겨져 있는데, 가장 왼쪽 톱니바퀴가 1번, 그 오른쪽은 2번, 그 오른쪽은 3번, 가장 오른쪽 톱니바퀴는 4번이다. 이때, 톱니바퀴를 총 K번 회전시키려고 한다. 톱니바퀴의 회전은 한 칸을 기준으로 한다. 회전은 시계 방향과 반시계 방향이 있고, 아래 그림과 같이 회전한다. 톱니바퀴를 회전시키려면, 회전시킬 톱니바퀴와 회전시킬 방향을 결정해야 한다. 톱니바퀴가 회전할 때, 서로 맞닿은 극에 따라서 옆에 있는 톱니바퀴를 회전시킬 수도 있고, 회전시키지 않을 수도 있다. 톱니바퀴 A를 회전할 때, 그 옆에 있는 톱니바퀴 B와 서로 맞닿은 톱니..
문제 트리의 지름이란, 트리에서 임의의 두 점 사이의 거리 중 가장 긴 것을 말한다. 트리의 지름을 구하는 프로그램을 작성하시오. 입력 트리가 입력으로 주어진다. 먼저 첫 번째 줄에서는 트리의 정점의 개수 V가 주어지고 (2≤V≤100,000)둘째 줄부터 V개의 줄에 걸쳐 간선의 정보가 다음과 같이 주어진다. (정점 번호는 1부터 V까지 매겨져 있다고 생각한다) 먼저 정점 번호가 주어지고, 이어서 연결된 간선의 정보를 의미하는 정수가 두 개씩 주어지는데, 하나는 정점번호, 다른 하나는 그 정점까지의 거리이다. 예를 들어 네 번째 줄의 경우 정점 3은 정점 1과 거리가 2인 간선으로 연결되어 있고, 정점 4와는 거리가 3인 간선으로 연결되어 있는 것을 보여준다. 각 줄의 마지막에는 -1이 입력으로 주어진다..

Stack 스택은 한 쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형 자료구조이다. 나중에 넣은 값이 먼저 나오는 LIFO(Last In First Out / FILO) 구조를 가지고 있다. 스택의 연산 push : 스택의 가장 위에 데이터 삽입 top : 스택의 가장 위에 있는 데이터 조회 pop : 스택의 가장 위에 있는 데이터 삭제 Queue 큐는 먼저 넣은 값이 먼저 나오는 FIFO(First In First Out) 구조로 저장하는 자료구조이다. 큐의 연산 Enqueue : 큐의 rear에 데이터를 삽입 Dequeue : 큐의 front에서 데이터를 삭제 Front : 데이터를 꺼내는 위치 Rear : 데이터를 삽입하는 위치
문제 초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 - prices의 각 가격은 1 이상 10,000 이하인 자연수입니다. - prices의 길이는 2 이상 100,000 이하입니다. 입출력 예 prices return [1, 2, 3, 2, 3] [4, 3, 1, 1, 0] 문제해결방법 주식의 가격과 집어넣는 시간을 순서대로 스택에 쌓는다. 스택에 값을 넣을때 스택의 top을 확인하고 지금 넣는 가격에 비해 높다면 떨어진 것이므로 스택에서 꺼내면서 시간을 비교해서 가격이 떨어지지 않은 기간을 기록한다. 위 과정을 스택의 top의 가격이 같거나 작을때까지 반복하면서 가격..
문제 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. 제한사항 - 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다. - 작업 진도는 100 미만의 자연수입니다. - 작업 속도는 100 이하의..
문제 선행 스킬이란 어떤 스킬을 배우기 전에 먼저 배워야 하는 스킬을 뜻합니다. 예를 들어 선행 스킬 순서가 스파크 → 라이트닝 볼트 → 썬더일때, 썬더를 배우려면 먼저 라이트닝 볼트를 배워야 하고, 라이트닝 볼트를 배우려면 먼저 스파크를 배워야 합니다. 위 순서에 없는 다른 스킬(힐링 등)은 순서에 상관없이 배울 수 있습니다. 따라서 스파크 → 힐링 → 라이트닝 볼트 → 썬더와 같은 스킬트리는 가능하지만, 썬더 → 스파크나 라이트닝 볼트 → 스파크 → 힐링 → 썬더와 같은 스킬트리는 불가능합니다. 선행 스킬 순서 skill과 유저들이 만든 스킬트리1를 담은 배열 skill_trees가 매개변수로 주어질 때, 가능한 스킬트리 개수를 return 하는 solution 함수를 작성해주세요. 제한사항 - 스킬..

Array 배열은 연속된 메모리 공간에 같은 타입을 갖는 데이터를 저장하는 자료구조이다. 동일한 타입의 여러 데이터를 연속된 공간에 저장하게 되면 각각의 요소의 위치를 시작 위치에 오프셋을 더하는것 만으로 구할 수 있다. 데이터 접근 배열은 특정 순서의 데이터에 접근할 때, 해당 순서의 인덱스를 통해 바로 접근이 가능하다. 데이터 삽입, 삭제 특정 인덱스에 데이터를 삽입하거나 해당 데이터를 삭제할 때, 배열은 아래와 같은 과정이 이루어진다. 데이터 삽입 데이터 삭제 삽입 혹은 삭제하려는 위치의 뒤에 있는 모든 요소들에 대한 작업이 필요하다. Linked List 링크드 리스트는 연속되지 않은 메모리 공간에 데이터를 저장하는 선형 자료구조이다. 링크드 리스트의 데이터는 다음 데이터의 위치 혹은 이전 데이터..
문제 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력 첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다. 문제해결방법 1x2 타일을 두 개 붙여서 두 칸을 채우는 타일을 만든다. 이렇게 하면 1칸 짜리 타일 1개, 2칸 짜리 타일 1개로 생각할 수 있다. n번째 타일을 채우는 경우의 수를 생각하면 n-1 번째 타일에서 1칸 짜리 타일을 붙이는 방법과 n-2 번째 타일에서 2칸 짜리 타일을 붙이는 방법이 있다. 이것을 수식으로 나타내면 다음과 같다. 타일[n] = 타일[n-1] + 타일[n-2] 코드 1234567891011121314151617pa..
문제 테트리스는 C열 필드위에서 플레이하는 유명한 게임이다. 필드의 행의 수는 무한하다. 한 번 움직일 때, 아래와 같은 일곱가지 블록 중 하나를 필드에 떨어뜨릴 수 있다. 블록을 떨어뜨리기 전에, 플레이어는 블록을 90, 180, 270도 회전시키거나 좌우로 움직일 수 있다. 이때, 블록이 필드를 벗어나지 않으면 된다. 블록을 필드의 바닥이나 이미 채워져있는 칸의 위에 놓여지게 된다. 창영이가 하고있는 테트리스는 일반적인 테트리스와 약간 규칙이 다르다. 블록이 떨어졌을 때, 블록과 블록 또는 블록과 바닥 사이에 채워져있지 않은 칸이 생기면 안 된다. 예를 들어, 아래와 같이 각 칸의 높이가 2, 1, 1, 1, 0, 1인 경우를 생각해보자. 블록 5번을 떨어뜨리는 방법의 수는 아래와 같이 다섯가지이다...
문제 우리 나라는 가족 혹은 친척들 사이의 관계를 촌수라는 단위로 표현하는 독특한 문화를 가지고 있다. 이러한 촌수는 다음과 같은 방식으로 계산된다. 기본적으로 부모와 자식 사이를 1촌으로 정의하고 이로부터 사람들 간의 촌수를 계산한다. 예를 들면 나와 아버지, 아버지와 할아버지는 각각 1촌으로 나와 할아버지는 2촌이 되고, 아버지 형제들과 할아버지는 1촌, 나와 아버지 형제들과는 3촌이 된다. 여러 사람들에 대한 부모 자식들 간의 관계가 주어졌을 때, 주어진 두 사람의 촌수를 계산하는 프로그램을 작성하시오. 입력 사람들은 1, 2, 3, …, n (1≤n≤100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사..