전체 글 47

[프로그래머스] 입국 심사 (Python, 이분탐색)

풀이이분 탐색 문제이다.한 번 정리해두면 형식은 똑같을거 같아서 한 번 풀어봤다. 최솟값 최댓값을 주어지는 자료의 범위에 맞게 설정하고,중간 값을 기준으로 나올 수 있는 해가 큰 지 작은지 여부를 확인하고,작다면 왼쪽의 절반, 크다면 오른쪽에 절반에 대해 동일한 과정을 계속 반복한다.코드def solution(n, times): left = 1 right = max(times)*n answer = 0 while left=n: break # 값이 크다면 왼쪽 절반을 탐색 if checked >= n: answer = mid right = mid -1 # 값이 작..

Algorithm 2024.11.08

[프로그래머스] 의상 (Python, 해시)

의상 풀이얼굴, 상의, 하의, 겉옷에 해당되는 옷의 종류가 주어진다. 옷을 입을 수 있는 모든 조합의 수를 구하면 된다. 한  부위에만 옷을 입을수 있다. A의 종류가 N개, B의 종류가 M개 일 때 가능한 모든 경우의 수는 (N+1)(M+1)로 구할 수 있다. 코드from collections import defaultdictdef solution(clothes): my_clothes = defaultdict(int) for cloth in clothes: kind, place = cloth my_clothes[place] += 1 answer = 1 for num in my_clothes.values(): answer *..

Algorithm 2024.11.03

[프로그래머스] 전화번호 목록 (Python, 해시)

전화번호 목록 풀이내 번호가 다른 사람의 번호의 접두어가 되는지 확인하고 접두어가 된다면 false 그렇지 않다면 true를 반환한다.처음에는 내 번호를 포함한 다른 번호가 있는지 확인해보려고 했는데 그렇게되면 hash를 사용할 필요가 없어져서 hash를 이용해서 풀고자 다른 방법을 선택했다.  모든 번호를 dict 형태로 저장하고, 내 번호를 앞에서 하나씩 잘라가면서 잘린 번호랑 일치하는 다른 번호가 있는지 확인하는 방법을 선택했다.코드def solution(phone_book): # 1.Hash map생성 hash_map = {} for nums in phone_book: hash_map[nums] = 1 # 2.접두어가 Hash map에 존재하는지 찾..

Algorithm 2024.11.03

2주차 미션 코드 리뷰 정리

2주 차 미션 코드리뷰를 진행하면서 받았던 리뷰와 공통적으로 많이 고민하셨던 문제들에 대해서 정리해보려고 한다. 1. 상수화- 문자와 문자열을 하드코딩해서 넣기보다는 상수로 관리하는 것을 추천해 주셨다. 상수로 관리하면 값이 변경될 때마다 하나하나 하드코딩 된 값을 변경하지 않아도 되기 때문에 유지 보수의 측면에서 확실한 이점이 있다고 생각한다. 또한 상수로 표현하면 해당 값이 어떤 역할을 하는지 명확하게 드러낼 수 있어서 코드를 이해하기 더 편리할 것이다. 2. 클래스, 메서드 분리- 클래스와 메서드가 적절하게 분리되지 못하였다. 하나의 클래스에서 많은 책임을 지고 있었고 하나의 메서드에서 여러 개의 기능이 수행되고 있었다. 클래스와 메서드를 분리해서 단일 책임 원칙을 준수해 유지보수의 용이성을 확보하..

[Java, 제네릭] 제네릭 정리

제네릭 클래스제네릭을 사용하면 코드 재사용과 타입 안정성을 확보할 수 있다.public class GenericBox { private T value; public void set(T value) { this.value = value; } public T get() { return value; }}- ``를 사용한 클래스를 제네릭 클래스라 한다. `` 기호는 보통 다이아몬드라 한다.- 제네릭 클래스를 사용할 때는 타입을 미리 결정하지 않는다- 대신에 클래스명 오른쪽에 ``와 같이 선언하면 제네릭 클래스가 된다.   - 여기서 `T`를 타입 매개변수라 한다.   - 이 타입 매개변수는 이후에 여러 타입으로 변할 수 있다- 그리고 클래스 내부에 `T` 타입이 필요한 곳에 타입 매개변수를 적어두면 된다 n..

Java 2024.11.01

[프로그래머스] 이중우선순위큐 (Python, 힙)

이중우선순위큐 풀이operations 배열로 부터 명령어을 추출하고 명령어에 해당되는 명령을 수행하면 된다.명령은 삽입, 최댓값 삭제, 최솟값 삭제의 3가지로 구성되어 있다. 코드와 함께 생각의 흐름을 설명하겠다.코드import heapqdef solution(operations): answer = [] nums =[] for operation in operations: letter, num = operation.split() if letter == 'I': heapq.heappush(nums, int(num)) elif nums: # 최솟값 삭제 if num == "-1": ..

Algorithm 2024.10.31