728x90

알고리즘 48

[프로그래머스 lv2] H-Index.java

https://programmers.co.kr/learn/courses/30/lessons/42747 코딩테스트 연습 - H-Index H-Index는 과학자의 생산성과 영향력을 나타내는 지표입니다. 어느 과학자의 H-Index를 나타내는 값인 h를 구하려고 합니다. 위키백과1에 따르면, H-Index는 다음과 같이 구합니다. 어떤 과학자가 발표 programmers.co.kr 어떤 과학자가 발표한 논문 n편 중, h번 이상 인용된 논문이 h편 이상이고 나머지 논문이 h번 이하 인용되었다면 h의 최댓값이 이 과학자의 H-Index이다. 어떤 과학자가 발표한 논문의 인용 횟수를 담은 배열 citations가 매개변수로 주어질 때, 이 과학자의 H-Index를 return 하면 되는 문제이다. 입출력의 예는..

알고리즘 2022.05.06

[프로그래머스 lv3] 네트워크.py

https://programmers.co.kr/learn/courses/30/lessons/43162 코딩테스트 연습 - 네트워크 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있 programmers.co.kr 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미한다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있다. 컴퓨터의 개수 n..

알고리즘 2022.05.04

[백준 실버3] N과 M(2).py

https://www.acmicpc.net/problem/15650 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc.net 자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열 고른 수열은 오름차순이어야 한다. 입출력의 예는 다음과 같다. 예제 입력 1 복사 3 1 예제 출력 1 복사 1 2 3 예제 입력 2 복사 4 2 예제 출력 2 복사 1 2 1 3 1 4 2 3 2 4 3 4 예제 입력 3 복사 4..

알고리즘 2022.04.29

[프로그래머스 lv2] 조이스틱.py

https://programmers.co.kr/learn/courses/30/lessons/42860 코딩테스트 연습 - 조이스틱 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다 programmers.co.kr 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같다. ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 ..

알고리즘 2022.04.27

[프로그래머스 lv 1] k번째 수.java

https://programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 한다. 예를 들어 array가 [1, 5, 2, 6, 3, 7, 4], i = 2, j = 5, k = 3이라면 array의 2번째부터 5번째까지 자르면 [5, 2, 6, 3] 1에서 나온 배열을 정렬하면 [2, 3, 5, 6] 2에서 나온 배열의 3번째 숫자는 5 입출력의 예는 다음과 같다. array commands return..

알고리즘 2022.04.25

[프로그래머스 lv 3] 이중우선순위큐.java

https://programmers.co.kr/learn/courses/30/lessons/42628 코딩테스트 연습 - 이중우선순위큐 programmers.co.kr 이중 우선순위 큐가 할 연산 operations가 매개변수로 주어질 때, 모든 연산을 처리한 후 큐가 비어있으면 [0,0] 비어있지 않으면 [최댓값, 최솟값]을 return 하도록 solution 함수를 구현하면 되는 문제이다. 이중 우선순위 큐는 다음의 연산을 할 수 있는 자료구조를 말한다. 명령어 수행할 명령 I 숫자 큐에 주어진 숫자를 삽입합니다. D 1 큐에서 최댓값을 삭제합니다. D -1 큐에서 최솟값을 삭제합니다. 입출력의 예는 다음과 같다. operations return ["I 16","D 1"] [0,0] ["I 7","I..

알고리즘 2022.04.20

[프로그래머스 lv 2] 더 맵게.java

https://programmers.co.kr/learn/courses/30/lessons/42626 코딩테스트 연습 - 더 맵게 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶습니다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같 programmers.co.kr 매운 것을 좋아하는 Leo는 모든 음식의 스코빌 지수를 K 이상으로 만들고 싶다. 모든 음식의 스코빌 지수를 K 이상으로 만들기 위해 Leo는 스코빌 지수가 가장 낮은 두 개의 음식을 아래와 같이 특별한 방법으로 섞어 새로운 음식을 만든다. 섞은 음식의 스코빌 지수 = 가장 맵지 않은 음식의 스코빌 지수 + (두 번째로 맵지 않은 음식의 스코빌 지수..

알고리즘 2022.04.14

[프로그래머스 lv 2] 프린터.py

https://programmers.co.kr/learn/courses/30/lessons/42587 코딩테스트 연습 - 프린터 일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린 programmers.co.kr 중요도까지 고려해서 문서를 출력하는 프린터가 있다. 해당 프린터는 아래의 로직대로 작업을 수행한다. 1. 인쇄 대기목록의 가장 앞에 있는 문서(J)를 대기목록에서 꺼냅니다. 2. 나머지 인쇄 대기목록에서 J보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기목록의 가장 마지막에 넣습니다. 3. 그렇지 않으면 J를 인쇄합니다. 현재 대기목록에 있는 문서의 중요도가..

알고리즘 2022.04.13

[프로그래머스 lv 1] 체육복.java

https://programmers.co.kr/learn/courses/30/lessons/42862 코딩테스트 연습 - 체육복 점심시간에 도둑이 들어, 일부 학생이 체육복을 도난당했습니다. 다행히 여벌 체육복이 있는 학생이 이들에게 체육복을 빌려주려 합니다. 학생들의 번호는 체격 순으로 매겨져 있어, 바로 앞번 programmers.co.kr 최종적으로 체육수업을 들을 수 있는(체육복이 있는) 학생의 수를 구하면 된다. 여벌 체육복이 있는 학생은 체육복을 도난 맞은 학생에게 빌려줄 수 있는데, 이때 자신의 앞, 뒤 번호를 가진 학생에게만 빌려줄 수 있다. (여벌 체육복이 있는 학생이 도둑맞았다면 다른 학생에게 빌려줄 수 없다.) 입출력의 예는 다음과 같다. n lost reserve return 5 [..

알고리즘 2022.04.08

[자료구조] 탐욕법 (그리디 알고리즘 - Greedy algorithm)

💛 탐욕법이란? 현재 상황에서 가장 좋은 선택을 고르는 알고리즘 이전에 살펴본 동적 프로그래밍을 간단한 문제 해결에 사용하면 지나치게 일을 많이 한다는 문제점을 해결하기 위해 등장했다. 지나치게 일을 많이 하는 경우를 방지해주긴 하지만, 항상 최적해를 보장하는 동적 프로그래밍에 비해 탐욕법은 항상 최적의 해를 보장하지는 않는다. 위의 간단한 트리를 보면서 탐욕법으로 구한 해와 동적 프로그래밍으로 구한 해가 어떻게 다른지 알아보자 루트 노드에서 시작해서 지나친 모든 노드의 수를 더했을 때 가장 결과 값이 큰 경로를 구한다고 하면 노란색의 노드를 지나가는 경로가 탐욕법으로 구한 결과이고 연두색의 노드를 지나가는 경로가 동적 계획법으로 구한 결과 이다. 이처럼 탐욕법은 현재 시점에서 하는 선택만을 고려하기 때..

알고리즘 2022.04.07
728x90
반응형