Hash
개념
해시 함수를 사용해서 변환한 값을 인덱스로 삼아 키와 값을 저장해서 빠른 데이터 탐색을 제공하는 자료구조이다.
문제 1. 완주하지 못한 선수
설명
많은 선수 중 단 한 명의 선수를 제외하고 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 있을 때 완주하지 못한 선수의 이름을 반환하는 solution() 함수를 작성하세요.
제약 조건
마라톤 경기에 참여한 선수 수는 1명 이상 100,000명 이하입니다.
completion 길이는 participant 길이보다 1 작습니다.
참가자 이름은 1개 이상 20개 이하의 알파벳 소문자로 이루어져 있습니다.
참가자 중에는 동명이인이 있을 수 있습니다.
입출력의 예
["leo", "kiki", "eden"]
["eden", "kiki"]
"leo"
["marina", "josipa", "nikola", "vinko", "filipa" ]
["josipa", "filipa", "marina", "nikola" ]
"vinko"
["mislav", "stanko", "mislav", "ana"]
["stanko", "ana", "mislav"]
"mislav"
코드
문제 2. 할인 행사
설명
XYZ 마트는 일정 금액을 지불하면 10일 동안 회원 자격을 부여합니다. XYZ 마트에서는 회원을 대상으로 매일 1가지 제품을 할인하는 행사를 합니다. 할인 제품은 하루에 하나만 구매할 수 있습니다. 알뜰한 정현이는 자신이 원하는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치할 때에 맞춰서 회원가입을 하려 합니다.
예를 들어 정현이가 원하는 제품이 바나나 3개, 사과 2개, 쌀 2개, 돼지고기 2개, 냄비 1개이고, XYZ 마트에서 14일간 회원을 대상으로 할인하는 제품이 날짜 순서대로 치킨, 사과, 사과, 바나나, 쌀, 사과, 돼지고기, 바나나, 돼지고기, 쌀, 냄비, 바나나, 사과, 바나나면 첫째 날부터 열흘 동안 냄비는 할인하지 않으므로 첫째 날에는 회원가입을 하지 않습니다. 셋째, 넷째, 다섯째 날부터 각각 열흘 동안은 원하는 제품과 수량이 일치하므로 셋 중 하루에 회원가입을 합니다.
정현이가 원하는 제품을 나타내는 문자열 배열 want와 정현이가 원하는 제품의 수량을 나타내는 정수 배열 number, XYZ 마트에서 할인하는 제품을 나타내는 문자열 배열 discount가 있을 때 회원가입 시 정현이가 원하는 제품을 모두 할인받을 수 있는 회원 등록 날짜의 총 일수를 반환하는 solution() 함수를 완성하세요. 가능한 날이 없으면 0을 return 합니다.
제약 조건
1 <= want 의 길이 = number 의 길이 <= 10
1 <= number 의 원소 <= 10
number[i] 는 want[i]의 수량
number의 총합 10
10 <= discount의 길이 <= 100,000
want와 discount의 원소들은 알파벳 소문자로 이루어진 문자열
1 <= want의 원소의 길이, discount의 원소의 길이 <= 12
입출력의 예
["banana", "apple", "rice", "pork", "pot"]
[3, 2, 2, 2, 1]
["chicken", "apple", "apple", "banana", "rice", "apple", "pork", "banana", "pork", "rice", "pot", "banana", "apple", "banana"]
3
["apple"]
[10]
["banana", "banana", "banana", "banana", "banana", "banana", "banana", "banana", "banana", "banana"]
0
코드
참고
Last updated