일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |
- 이것이 자바다
- R
- C programming
- Serialization
- coding test
- buffer
- datastructure
- Stack
- insertion sort
- Algorithm
- 혼자 공부하는 C언어
- JSON
- Graph
- stream
- s
- 알기쉬운 알고리즘
- 이스케이프 문자
- list 컬렉션
- C 언어 코딩 도장
- 메모리구조
- 윤성우의 열혈 자료구조
- 윤성우 열혈자료구조
- Selection Sorting
- Today
- Total
목록Problem Solving/Programmers (19)
Engineering Note
Link : https://school.programmers.co.kr/learn/courses/30/lessons/12982?language=java Note 문제를 해석해보면 각 부서별로 물품 구매를 위해 필요한 금액이 있고, 회사는 전체 예산내에서 각 부서를 지원해줄 수 있다. 이때 최대 몇 개의 부서를 지원할 수 있는지 return 하는 문제이다. 단, 부서별 지원금액은 신청한 금액만큼을 모두 지원해주어야 한다. 나는 평소에 문제를 문자보다 시각적으로 변환해서 이해하는 것을 좋아하여 시각적으로 문제를 표현해 보았다.그리고 다음과 같은 문제와 같음을 이해할 수 있었다. budget 크기의 통에 크기가 부서별 신청 금액에 비례하는 상자를 집어 넣을 때 가장 많은 상자를 넣는 방법은?으로 해석할 수 있..
Link : https://programmers.co.kr/learn/courses/30/lessons/86971 Note 자료구조, 알고리즘의 개념에 대해 다시 생각해보게 해주는 문제였다. 쉬운 문제만 풀었을 때는 문제를 잘 이해하고 구현하는 과정에만 집중하면 된다고 생각했다. 하지만 역시 기본개념이 중요하다. 이 문제를 풀면서 트리, 트리 탐색에 대해서 다시 복습하는 기회가 되었다. 개념이 부족할 때는 무작정 완전탐색으로만 문제를 해결하려고 하는 경향이 많았다. 이 문제에서도 처음에는 완전탐색으로 문제를 해결했다. 답은 나오지만 좋은 방법은 아니다. 자료구조, 알고리즘의 개념이 더 정확하게 쌓여있었다면 더 효율적인 코드를 작성할 수 있다. wires의 최대값이 100이기 때문에 송전탑 연결상태를 하나..
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/49189 문제 요약 및 해설 n개의 노드가 있는 그래프가 있다. 각 노드는 1번부터 n까지 번호가 적혀있다. 1번 노드에서 가장 멀리 떨어진 노드의 갯수를 구하면된다. 가장 멀리떨어진 노드란 최단경로로 이동했을 때 가넌의 개수가 가장 많은 노드들을 의미한다. 입력 정보는 노드의 개수(n)과 간선 정보(vertex), vertex[a][b]는 a번 노드와 b번 노드 사이에 간선이 있다는 의미이다. * 문제 해결 방법 1. vertex로부터 그래프 자료구조를 표현한다. 인접행렬 또는 인접리스트 방식으로 만든다. 2. 1에서 만든 그래프를 1번 노드부터 그래프를 탐색하면서 각 노드마다 1번노드로 부터 최..
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42883?language=python3 문제 요약 및 해설 가장 큰 자리수에, 위치로 말하면 가장 왼쪽에 9,8,7,6,5,4,3,2,1 순으로 숫자가 위치해야 한다. 1. 문제에 주어진 숫자를 i 인덱스에서 하나씩 꺼내 현재 숫자 변수에 넣는다. (최초의 i 인덱스는 0이다. 마지막 인덱스는 문자열 길이-1이다.) 2. (k 값이 0보다 크고 가장 마지막에 삽입한 숫자 < 현재 숫자) 라면 3 번으로 아니면 4번으로 간다. 3. 가장 마지막에 삽입한 숫자를 제거하고 k 값을 하나 줄이고 다시 2번으로 간다. 4. stack에 현재 숫자를 푸시한다. i 인덱스를 하나 증가한다. 1번으로 간다. 5...
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42586 문제 요약 및 해설 배포 순서와 현재 진행 상태가 적힌 배열, 각 기능의 개발 속도가 적힌 배열이 주어 질때 각 배포 마다 몇 개의 기능이 배포 되는지 return 하도록 하는 solution 함수를 완성 이때, 각 기능은 100%일 때 배포가 가능하고, 뒤에 기능이 먼저 개발된다고 하더라도 배포 순서에 따라 앞에 기능이 완료되지 않았다면 배포 할 수 없다. 배포는 하루에 한 번만 이루어지며 하루의 끝에 이루어 진다. 예를 들어 진도율이 95%인 작업의 개발 속도가 하루에 4%라면 첫 날에는 99% 둘 째날에는 100%를 달성할 수 있다. 즉 2일 뒤에 배포가 이루어진다. 알고리즘 1. 모..
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12980 해설 점프 : K칸 앞으로 점프, K만큼 건전지 사용 순간 이동: (현재까지 온 거리)*2의 위치로 이동, 건전지 사용 안함 0의 위치에서 n으로 이동할 때, 점프 or 순간 이동을 사용하는데 건전지 사용량을 최소로 사용해야한다. 이때 최소 건전지 사용량을 return 해라. 건전지를 최소로 사용하기 위해서는 점프를 최소로하고 순간이동을 최대로 늘려야한다. 문제의 주어진 예시를 통해 살펴보자. 순간 이동을 최대로 하기 위해서는 마지막 n으로 오기 직전일때 2배를 했을 때 가장 이동 구간이 크기 때문에 마지막에는 최대한 순간이동을 사용하는 것이 좋다. 그러나 점프는 앞으로만 이동이 가능하므로..
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/68935 해설 1. 입력값으로 주어진 수를 3진법으로 바꾼다. 2. 1에서 구한 3진법을 표기된 수를 뒤집는다. 3. 2에서 구한 수를 10진법으로 바꾼다. n진법의 수를 구할때 주어진 수를 n으로 계속 나누면서 나머지를 차례 차례 n의 i승 자리에 적어주면 된다. i는 0부터 시작하여 나눌때마다 1씩 증가한다. 하지만 지금 구해진 각각의 나머지는 한자리 숫자를 의미한다. 뒤집기 위하여 이 수를 리스트에 저장해둘수도 있다. 예를 들면 45를 n진법으로 구하는 과정에서 구해지는 나머지 수는 0,0,2,1 이고 3진법으로 적으면 1200(3)이다. 그렇다면 이 수를 거꾸로 구한 수를 [0,0,2,1]라..
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/12985 해설 N명이 게임에 참가하고 12, 34, 56, ... N-1N 규칙으로 대결을 한다. 그리고 이긴 승자는 다음라운드에 진출하고 다시 번호를 부여 받는다. 이 규칙을 표현하면 다음과 같다. ''' 1 2 3 4 5 6 7 8 1 2 3 4 1 2 ''' 여기서 다음 라운드 숫자의 번호를 구하는 규칙은 현재 번호에서 2로 나눈 나머지와 몫을 더하면 다음 라운드의 번호가 된다. 그리고 다음 라운드의 예상 번호가 같다는 것은 현재 라운드에서 대결을 했다는 것이다. 예를 들면 3번과 4번 중에 3번이 이겼다면 다음라운드에 2번이 되고 4번이 이겼어도 2..