1. 문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr2. 풀이 과정회원이어야 할인을 받을 수 있고 할인은 가입시점부터 10일동안 유지된다.1일에 회원에 가입한다면 1~10일까지의 할인상품이 정현이의 구매목록과 일치해야하고2일에 회원에 가입한다면 2~11일까지의 할인 상품이 정현이의 구매목록과 일치해야한다. 나는 이 문제를 해결하기 위해 매일매일 할인하는 상품과 일치하는 정현이의 상품의 남은 갯수를 하나 씩 지워주고 모든 상품의 남은 갯수가 0이 되면 그날의 9일 전이 올바른 회원가입날짜로 판단했다.(10일에 모든상품을 구매한 경우 이는 1일의 회원가입 ..
1. 문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr2. 풀이 과정이 문제를 가장 쉽게 푸는 방법은 하나하나 대조해가며 푸는 것이다. 모든 i에 대해 participant[i]와 같은 completion이 있는지를 찾고 그 completion을 지운다.이렇게 되면 최종적으로는 participant에는 한명이 남게 되는데 이 사람이 답이 된다.이 경우 시간복잡도는 O(N^2)이 나올 것이다.그러나 이 문제의 입력 최대 크기가 10만이다. 즉, O(N^2)로는 풀 수 없다. 따라서 각 participant에 대해 completion을 조회하는 과정의 시간복잡..
1. 문제 2. 풀이 과정이 문제를 딱보자마자 들었던 생각은 이중 for문 이었다.이중 for문을 통해 두 개의 수를 뽑아서 합을 구한 다음, 그 합이 target과 일치하는지를 확인하면 된다.그렇게 되면 시간복잡도가 O(N^2)이 된다. 하지만 애석하게도 이 문제의 입력최대 크기는 10000이다. O(N^2)으로는 풀 수가 없다. 따라서 생각의 방향을 바꿨다. arr[i]와 그 외 다른 배열의 원소 arr[k]를 더했을 때 target이 되게 하는 arr[k]가 배열에 있는지를 체크한다. 이때 arr[k]가 배열에 있는지 체크하는 과정이 핵심인데 그냥 배열로 조회한다면 O(N)이 소요되겠지만 해시를 이용한다면 O(1)로 해결이 가능하다. 3. 내 코드public static boolean soluti..
해시(Hash)란?해시(Hash)란 특정 key를 인덱스로 삼아 value 값을 저장하는 자료구조이다.이 key 값은 해시함수를 통해 해시값으로 변환되어 value값의 인덱스가 된다. 리스트와 같은 자료구조에선 단순히 숫자가 value의 인덱스가 되겠지만 해시에는 숫자 뿐만 아니라 모든 객체를 인덱스처럼 사용할 수 있다. 이러한 자료구조는 실생활에서도 쉽게 볼 수 있는데 대표적인 예가 전화번호부이다.key가 이름이고 value가 전화번호이다.이름을 해시함수에 넣어서 이를 통해 해시 값을 반환해 전화번호에 매핑한다.해시를 통해 빠르게 특정 데이터를 빠르게 접근할 수 있다.key값만 있으면 value값을 바로 찾아낼 수 있으므로 시간 복잡도가 O(1)이 된다. 해시 값과 value를 매칭시켜놓은 공간을 ..