1. 문제 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr2. 풀이 과정이 문제의 핵심은 닉네임이 변경되는 부분이다.닉네임이 변경되는 경우는 두 가지 케이스이다.1. Enter - Leave - 다른닉네임으로 Enter2. Change 닉네임이 변경되면 기존의 메시지에 있던 닉네임들이 바뀐 닉네임으로 바뀌게 된다. record를 하나하나씩 바로바로 메시지로 변환하다보면 중간에 닉네임이 변경됐을 때, 모든 메시지를 다시 바꿔야하는 불상사가 발생한다. 따라서 닉네임에 대한 변경을 먼저 파악하고 메시지를 최종적으로 한번에 뽑아내야하는 식으로 접근해야한다. 1. 최종..
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..