탐욕법 04 - 구명보트, 프로그래머스, 알고리즘, Programmers, Stack, Queue, Hash, 코딩테스트, Algorithm, 풀이과정, Leetcode, 릿코드, 코딩테스트, Tech interview, search, greedy
// Process // 1. Input // 2. Sort people in ascending way // 3. Iterate till front and rear index are met // 3.1. Check if front and rear index value can take the same boat // 3.1.1. If so -> move both indices // 3.1.2. If not -> move rear index // 3.2. ++boatCount // 4. Return boatCount import java.util.*; class Solution { public int solution(int[] people, int limit) { int boatCount = 0; int fr..
탐욕법 03 - 큰수만들기, 프로그래머스, 알고리즘, Programmers, Stack, Queue, Hash, 코딩테스트, Algorithm, 풀이과정, Leetcode, 릿코드, 코딩테스트, Tech interview, search, greedy
// 문제에서 예를 들 때 전체 조합을 나열하고 가장 큰 것을 골라서 순서가 변해도 상관 없을 것 같으나, // 실제로 답은 순서는 건드리지 않고 찾아나가야함. // Process // 1. Input // 2. 결과 숫자를 만들 때 까지 반복한다. // 2.1. 결과 숫자를 만들 때 필요한 최소 길이를 남기고 서브스트링을 만든다. // 2.2. 서브스트링에서 가장 큰 숫자를 찾아서 더한다. 이 때, 해당 인덱스를 기억해서 다음번에 여기부터 서브스트링을 만든다. // 2.3. 가장 큰 수를 결과에 더해둔다. // 2.4. 인덱스를 바꾼다. // 3. 결과 반환한다. class Solution { public String solution(String number, int k) { StringBuilder ..
탐욕법 01 - 체육복, 프로그래머스, 알고리즘, Programmers, Stack, Queue, Hash, 코딩테스트, Algorithm, 풀이과정, Leetcode, 릿코드, 코딩테스트, Tech interview, search, greedy
// Process // 1. Input n, lost, reserve // 2. Convert to list // 3. Remove overlapped students // 4. Iterate while lost and reserve are remained // 4.1. Check around(+-1) value of reserve is in lost array // 4.1.1. If so -> Remove both, and count student // 5. Return student import java.util.*; class Solution { public int solution(int n, int[] lost, int[] reserve) { int student = 0; // 2. List l..
완전탐색 03 - 카펫, 프로그래머스, 알고리즘, Programmers, Stack, Queue, Hash, 코딩테스트, Algorithm, 풀이과정, Leetcode, 릿코드, 코딩테스트, Tech interview, Heap, 힙, 정렬, sort, search
# Process # 1. Input brown, yellow numbers # 2. Check the number of edges (brown) # 2.1. If so -> Check the number of inner sector (yellow) # 2.1.1. If so -> append to answer (width, height) # 3. Return valid size import math def solution(brown, yellow): answer = [] # 2. init_brown = math.ceil(brown / 2) end_brown = 3 for width_brown in range(init_brown, end_brown-1, -1): height_brown = (brown -..
완전탐색 02 - 모의고사, 프로그래머스, 알고리즘, Programmers, Stack, Queue, Hash, 코딩테스트, Algorithm, 풀이과정, Leetcode, 릿코드, 코딩테스트, Tech interview, Heap, 힙, 정렬, sort, search
# Process # 1. Input numbers # 2. Make sieve depending on length of numbers # 3. Make all number permutations # 4. Check if each number made is prime number or not # 4.1. If so -> ++count # 4. Return count # 파이썬 문법 잘 몰라서 까다로운게 있었음 # 순열 재귀구현은 해보면 좋을 듯함 from itertools import permutations def solution(numbers): count = 0 # 2. sieve_length = '' for i in range(len(numbers)): sieve_length += '9' prime..
완전탐색 01 - 모의고사, 프로그래머스, 알고리즘, Programmers, Stack, Queue, Hash, 코딩테스트, Algorithm, 풀이과정, Leetcode, 릿코드, 코딩테스트, Tech interview, Heap, 힙, 정렬, sort, search
# Process # 1. Input answers # 2. Make math throwers answers # 3. Compare answers and math throwers' answers # 4. Get people who got highest score # 5. Return result def solution(answers): result = [] # 2. math_thrower_1 = [] math_thrower_2 = [] math_thrower_3 = [] exam_problems = len(answers) for i in range(1, exam_problems+1): remainder_of_5 = i % 5 remainder_of_8 = i % 8 remainder_of_10 = i %..
탐욕법 02 - 조이스틱, 프로그래머스, 알고리즘, Programmers, Stack, Queue, Hash, 코딩테스트, Algorithm, 풀이과정, Leetcode, 릿코드, 코딩테스트, Tech interview, Heap, 힙, 정렬, sort, greedy
// ASCII 65~ 90 (A~ Z) // Process #2 (greedy) // 1. Input name // 2. Make list or Map using Index and DiffCount of diff things // 3. Iterate while all list is removed // 3.1. Move to shorter distance (left or right) // 3.2. Count moving distance // 3.3. Count char diff // 3.4. Remove that thing from the list // 4. Return result count import java.util.*; class Solution { public int solution(Strin..
정렬 03 - H Index, 프로그래머스, 알고리즘, Programmers, Stack, Queue, Hash, 코딩테스트, Algorithm, 풀이과정, Leetcode, 릿코드, 코딩테스트, Tech interview, Heap, 힙, 정렬, sort
# Process # 1. Input citations list # 3. Iterate from maximum h index to lowest h index (0) # 3.1. Count how many papers are having citation count over h index # 3.2. Check if count is over h_index or not # 3.3. If so -> h_index return # 4. Finish # # performace 올려야함 def solution(citations): for index in range(len(citations), 0, -1): count = 0 for i in range(0, len(citations)): if citations[i] >..