본문 바로가기

전체 글361

[PRGRMS]72412번: 순위 검색 문제: https://programmers.co.kr/learn/courses/30/lessons/72412 여러 해결 방법이 있지만 저는 시뮬레이션 + 이분 탐색으로 해결했습니다. 지원자의 4가지 항목에 대해 생길 수 있는 81가지(4x3x3x3)의 상태를 분기하여 리스트를 만듭니다. 그리고 지원자의 정보를 입력받을 때 마다 지원자의 정보가 조회될 수 있는 상태 리스트에 모두 지원자의 점수를 넣어습니다. 그리고 쿼리 수행전에 오름차순 정렬을 해놓습니다. 그러면 하나의 쿼리를 이분 탐색을 통해 해결할 수 있습니다. 시간 복잡도는 O(NlogM)입니다. (지원자의 수: N, 쿼리의 수 M) 코드: https://github.com/cotchan/algorithm/blob/main/PRGRMS/%EC%88%.. 2022. 3. 10.
[PRGRMS]67257번: 수식 최대화 문제: https://programmers.co.kr/learn/courses/30/lessons/67257 시뮬레이션 문제입니다. 1. 순열을 통해 해당 연산자의 모든 우선순위쌍을 만듭니다. 2. 하나의 우선순위쌍을 기준으로 연산을 수행합니다. 연산을 수행하는 방법은 다양하지만, 제가 구현한 방식은 2개의 큐를 사용해서 우선순위가 높은 연산자를 먼저 연산하도록 했습니다. 한 가지 주의할 점은 연산을 수행하면서 최초의 식 순서가 바뀌면 안 됩니다ㅠㅠ 그러면 최종 연산 결과가 최적해와 다를 수 있습니다. 코드: https://github.com/cotchan/algorithm/blob/main/PRGRMS/%EC%88%98%EC%8B%9D%20%EC%B5%9C%EB%8C%80%ED%99%94.java 2022. 3. 10.
[PRGRMS]64065번: 튜플 문제: https://programmers.co.kr/learn/courses/30/lessons/64065 시뮬레이션 문제입니다. 튜플의 순서를 정할 수 있는 단서는 "해당 숫자가 문자열 내 몇 번 나왔는지" 입니다. 그러므로 문자열을 파싱해서 {각 숫자, 숫자가 나온 횟수} 쌍으로 저장한 뒤, '숫자가 나온 횟수'를 기준으로 내림차순 정렬하면 그게 올바른 튜플입니다. 코드: https://github.com/cotchan/algorithm/blob/main/PRGRMS/%ED%8A%9C%ED%94%8C.java 2022. 3. 10.
[PRGRMS]42890번: 후보키 문제: https://programmers.co.kr/learn/courses/30/lessons/42890 시뮬레이션 문제입니다. 1. 컴비네이션을 통해 1개 ~ 컬럼의 사이즈만큼 뽑는 경우의 수를 생성합니다. 2. 하나의 경우의 수 == 후보키가 되고 이 후보키를 통해 모든 튜플을 식별할 수 있는지 확인합니다. 3. 2번을 만족한다면 이 후보키가 슈퍼키인지 유무를 확인합니다. 슈퍼키 여부 판단은 비트의 &(and) 연산을 적용합니다. 1. 정답에 포함되는 candidateKey 2. 현재 슈퍼키 여부를 검증해야하는 정답 후보 nowKey boolean isSuperkey = ((candidateKey & nowKey) == candidateKey) 코드: https://github.com/cotcha.. 2022. 3. 9.