본문 바로가기

728x90

자바

[프로그래머스] 할인 행사 / 자바(Java) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/131127 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 2개의 map을 사용하여 생각보다 간단하게 해결했습니다. want, number배열을 기억하여 답을 확인해줄 Map (input) discount의 값을 하나씩 받으며 최근 10일간의 정보만을 가질 Map(counter) number의 원소합은 10이므로 오직 둘이 같은 경우에만 모든 물건을 원하는 만큼 살수 있으므로 두 Map이 같다면 answer를 늘려줍니다. 2중 for문이 생기.. 더보기
[프로그래머스] 연속 부분 수열 합의 개수 / 자바(Java) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 원형배열이 나오는 문제입니다. 이 경우 인덱스를 어떻게 관리하느냐가 중요한데 기존의 값을 넘긴 경우 0으로 되돌리는 방법은 부분합을 구해야하는 과정에서 계산이 복잡하게되어 기본배열을 뒤에 하나더 붙인 2배길이 배열을 만들어 해결하였습니다. 또한 부분합이 중복된 경우는 제외하고 구하므로 Set자료구조를 사용해 자동으로 중복을 제외시켜줍니다. 이후 범위가 1000인 비교적 작은 값이므로 .. 더보기
[프로그래머스] 귤 고르기 / 자바(Java) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 문제에서 귤의 크기와 상관없이 크기의 종류가 최소일 때 담으려는 귤의 수를 원하기 때문에 같은 크기인 귤의 수를 구하고 내림차순 정렬해주어 k개만큼 귤을 넣었을때 종류의 수를 return 으로 해결할 수 있는 문제입니다. tangerine의 원소의 범위가 길어 배열의 정렬은 시간초과가 날 수 있어 Map을 사용해 특정 크기의 귤 수를 구하고 해당 값으로 List를 만들어 정렬 후 fo.. 더보기
[프로그래머스] 롤케이크 자르기 / 자바(Java) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/132265 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 롤케이크(입력 배열)을 2개로 나누어 앞, 뒤로 확인하는 문제라 정렬을 쓸 수 없기 때문에 앞에서부터 하나씩 따라가며 공평하게 잘렸는가 여부를 판단하며 진행해야 합니다. topping의 길이가 1,000,000이기 때문에 O(N^2)의 시간복잡도를 가지게 되면 시간초과가 발생해 더 적은 시간복잡도가 필요합니다. topping의 원소의 범위가 1~1000으로 너무 많지 않아 배열을 사용.. 더보기
[프로그래머스] 점 찍기 / 자바(Java) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/140107 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 k와 d 모두 최대 1,000,000인 문제라 일일히 2차원 영역의 범위를 계산하면 시간초과가 발생합니다. 그래서 원의 반지름을 이용한 수식으로 답을 구합니다. 원점과의 거리가 d를 넘지 않는 위치에 점을 찍기 때문에 원점에서 d의 반지름을 가진 원 내부에 있는 x,y모두 k의 배수인 점을 구하는 문제가 됩니다. x의 좌표가 모두 k의 배수이기 때문에 특정 x좌표를 k*i라고 표현할 .. 더보기
[프로그래머스] 테이블 해시 함수 / 자바(Java) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/147354 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 중요하게 볼 부분이 2개 있습니다. 2차원 배열의 조건이 여러개인 정렬 XOR 1. 2차원 배열의 조건이 여러개인 정렬 주어진 2차원 배열을 정렬하기 위해 Arrays.sort와 람다식, 삼항연산자를 이용하였습니다. Arrays.sort(data, (a,b)-> a[col-1]==b[col-1] ? b[0]-a[0] : a[col-1]-b[col-1] ); 이때 col은 1부터 시작하.. 더보기
[프로그래머스] 시소 짝꿍 / 자바(Java) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/152996 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 weights의 길이가 딱 봐도 길어 일일히 비교한다면 약 100억번의 연산, O(n^2)이 필요해 시간복잡도를 고려해야하는 문제입니다. 일일히 비교하지 않고 쉽게 있던 값을 검색하는 방식으로 특정 무게를 키로 가지고 해당 무게를 가진 사람의 수를 값으로 가진 Map을 사용해야한다고 생각되었습니다. 또한 우리가 확인해야할 좌석은 3가지로 총 비교 횟수는 6가지에 추가로 같은 무게인 경.. 더보기
[프로그래머스] 마법의 엘리베이터 / 자바(Java) 문제 https://school.programmers.co.kr/learn/courses/30/lessons/148653 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 해설 각 자리수에 있는 숫자들을 비교하되 각 숫자가 어떤지에 따라 올림이 발생하므로 가장 낮은 자리의 숫자부터 연산합니다. int under = storey - (storey/10)*10; storey/=10; int형 숫자에 10을 나누고 곱하면 int의 특성상 1자리수가 사라진 수로 다시 나오므로 해당 연산을 통해 under는 항상 1의 자리 숫자가 나옴을 알 수 있습니다. 이후 본래 .. 더보기

728x90