해시 6

[백준] 2143 두 배열의 합, C++

2143번: 두 배열의 합 첫째 줄에 T(-1,000,000,000 ≤ T ≤ 1,000,000,000)가 주어진다. 다음 줄에는 n(1 ≤ n ≤ 1,000)이 주어지고, 그 다음 줄에 n개의 정수로 A[1], …, A[n]이 주어진다. 다음 줄에는 m(1 ≤ m ≤ 1,000)이 주어지고, 그 www.acmicpc.net 문제 요약 두 배열이 주어졌을때 각각의 배열로 만들수 있는 부배열의 합이 T가 되는 부배열쌍의 개수 구하기 접근 1. 생각의 흐름 각 배열의 부배열합을 구해서 저장해야한다. 원소가 1개인 것부터 모든 원소가 들어간 것 까지의 부배열을 만들고 그의 합을 저장했는데 누적합을 사용했다. void makeArr( vector& arr, vector& cumArr, int size ) { a..

STUDY/Algorithm 2022.09.18

[백준] 1351 무한수열, C++

1351번: 무한 수열 첫째 줄에 3개의 정수 N, P, Q가 주어진다. www.acmicpc.net 문제 요약 무한 수열 A의 N 번째 값 구하기 A0 = 1, Ai = A⌊i/P⌋ + A⌊i/Q⌋ (i ≥ 1) (⌊x⌋는 x를 넘지 않는 가장 큰 정수이다.) 접근 1. 구현 주어진 조건에 대해 구현하기. N 에 대해서 구해야하므로 Top Down 방식이 나을듯 했다. 그리고 max(N) = 10^12 이므로 꽤 많은 연산이 있을 것이고 중복 되는 값이 있을 것이므로 Dynamic Programming으로 구현한다. DP을 위해 배열을 사용해서 메모리를 잡으면 공간복잡도는 O(N)이나 최대값이 4*10^12이므로 메모리 제한을 초과한다. -> 해시(unordered_map)를 사용해서 필요한 값만 저장..

STUDY/Algorithm 2022.09.18

[프로그래머스] 해시 level3 베스트 앨범, python

https://programmers.co.kr/learn/courses/30/lessons/42579?language=python3 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr def solution(genres, plays): # 0 해시 생성 genre_set = set() genre_dict = dict() genre_play_dict = dict() # 1 입력 for i in range(len(genres)): if genres[i] not in genre_set: genre_set.add(ge..

STUDY/Algorithm 2021.12.26

[프로그래머스] 오픈채팅방, 2019 KAKAO BLIND RECRUITMENT, python

https://programmers.co.kr/learn/courses/30/lessons/42888?language=python3 코딩테스트 연습 - 오픈채팅방 오픈채팅방 카카오톡 오픈채팅방에서는 친구가 아닌 사람들과 대화를 할 수 있는데, 본래 닉네임이 아닌 가상의 닉네임을 사용하여 채팅방에 들어갈 수 있다. 신입사원인 김크루는 카카오톡 오 programmers.co.kr def solution(record): answer = [] answer_tmp = [] user_dict = {} for r in record: tmp = r.split() # answer_tmp = (uid, command) if r[0] == 'C' or r[0] == 'E': user_dict[tmp[1]] = tmp[2] ..

STUDY/Algorithm 2021.06.21