코딩테스트 10

[Lv2] 호텔 대실

📌 문제 https://school.programmers.co.kr/learn/courses/30/lessons/155651 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 주어진 문제의 배열을 오름차순으로 정렬한다. 시간의 비교를 숫자로 바꿔서 숫자 비교로 바꾸거나 아니면 LocalTime을 사용해서 Time의 비교를 진행해도 된다. 방의 할당은 PriorityQueue를 사용해서 할당한다. PriorityQueue는 기본형을 사용시 우선순위가 항상 낮은 숫자가 먼저 나오게 된다. 📌 코드 import java.util.*; class Solut..

[12891번] DNA 비밀번호

📌 문제 https://www.acmicpc.net/problem/12891 12891번: DNA 비밀번호 평소에 문자열을 가지고 노는 것을 좋아하는 민호는 DNA 문자열을 알게 되었다. DNA 문자열은 모든 문자열에 등장하는 문자가 {‘A’, ‘C’, ‘G’, ‘T’} 인 문자열을 말한다. 예를 들어 “ACKA” www.acmicpc.net 📌 풀이 해당 문제는 슬라이딩 윈도우를 사용하여 풀이할 수 있습니다. 슬라이딩 알고리즘의 핵심은 마치 창문을 밀듯이 배열을 탐색하면서 이때 추가되는 배열 부분만을 검사하고 탐색범위가 밀리면서 앞 부분 배열값은 삭제하는 것입니다. 이를 통해 시간복잡도를 개선할 수 있습니다. 📌 코드 import java.io.*; import java.util.*; class Ma..

Algorithms/백준 2023.09.21

[프로그래머스][lv2][1차] 뉴스 클러스터링

📌 문제 [1차] 뉴스 클러스터링 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 문제에서 제시한대로 구현하면 되는 문제입니다. 해당 문제를 구현할 때 핵심적인 부분은 map을 사용하여 교집합과 합집합을 구하는 부분입니다. 문제에서 min 과 max를 사용하여 교집합과 합집합을 구하는 풀이를 알려주었으므로 그대로 구현하면 됩니다. 풀이의 순서는 교집합과 합집합을 구할 수 있도록 주어진 String을 통해 Map을 만듭니다. 양쪽 map에 동일한 key값이 있는지 확인하는 방식으로 교집합과 합집합을 구합니다. (교집합 / 합집합) * 65536 을 ..

카테고리 없음 2023.04.12

[프로그래머스][Lv2] 할인행사

📌 문제 [할인행사 - 프로그래머스 lv2] 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 고객이 원하는 장바구니에 대한 map을 생성합니다. 할인점에서 만들 수 있는 장바구니(10일치)를 생성합니다. ✔️number 원소의 합은 10이므로 10일치에 대한 장바구니를 생성합니다. 이 둘을 비교하여 일치한다면 (장바구니를 구성하고 있는 과일과 그 개수) answer 의 값을 증가시켜 줍니다. 📌 코드 import java.util.*; class Solution { private static int answer = 0; public int solu..

[프로그래머스][Lv1][Java] 푸드파이트 대회

📌 문제 푸드파이트 대회 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 레벨 1의 구현 문제라서 그런지 풀이라고 할 만한 것이 딱히 없고 문제에 나온 조건대로 구현하면 쉽게 풀 수 있는 문제였습니다. 다만 바로 떠오르지 않은 문자열 뒤집는 메서드에 대한 공부가 필요할 것 같습니다. 📌 코드 import java.util.*; import java.util.Collections; class Solution { public String solution(int[] food) { String answer = ""; //0, 1, 2, 3 for(int ..

[프로그래머스][Lv2][Java] 폰켓몬

📌 문제 폰켓몬 - Lv2 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 배열의 크기를 구해 고를 수 있는 폰켓몬의 숫자를 구합니다. HashSet을 사용하여 폰켓몬의 종류 번호가 담긴 1차원 배열의 중복값을 제거합니다. 여기서 폰켓몬을 뽑는 경우의 수와는 상관없이(굳이 따지자면 순열 - 순서가 있음) 중복값을 제거한 폰켓몬의 종류에 따라 정답이 정해집니다. ❗️어차피 정답으로 구하는 것은 폰켓몬의 종류❗️ 중복을 제거한 Set 의 크기가 고를 수 있는 폰켓몬의 수보다 크다면 '고를 수 있는 폰켓몬의 수'가 정답입니다. 만약 Set의 크기가 고를..

[프로그래머스][Java] 삼총사

📌 문제 프로그래머스 Lv1 - 삼총사 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 📌 풀이 처음엔 순서가 없는 조합 문제라고 생각하여 파이썬에서와 같은 조합을 구해주는 라이브러리가 있나 생각했지만 이중 for문으로 구할 수 있는 문제였다. 이중 for문으로 세가지 숫자의 조합을 만들 수 있을 때까지 반복문을 돌린다 이 때 idx 를 선언하여 마지막 숫자는 고정 값으로 넣어준다. 📌 코드 class Solution { public int solution(int[] number) { int answer = 0; //3개의 숫자 그룹을 만들 수 있을때까지만..

[프로그래머스] 문자열 나누기 - Java

문제 문자열 나누기 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 문제의 규칙대로 구현하면 되는 구현 문제 반복문을 통해 돌리면서 첫번째 글자와 문자열들을 비교해 나간다. 첫 번째 글자와 같은 글자 수 세기 첫 번째 글자와 다른 글자 수 세기 코드 class Solution { public int solution(String s) { int answer = 0; // 정답 char first_character = s.charAt(0); // 첫 번째 문자 int same_count = 0; //첫 번째 글자와 같은 글자 수 세기 int diff_co..

[프로그래머스][Java] 가장 가까운 같은 글자

문제 프로그래머스 - 가장 가까운 같은 글자 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 answer 가 초기에는 int[] 로 초기화 되어있지만 값을 넣기 편하게 List 로 만들어서 사용 String 배열에 값을 구해야 하는 String 낱말 별로 넣어두기 Ex.)['b','a','n','a','n','a'] ❗️split 함수는 배열에서만 사용 가능 tempList 를 만들어서 해당하는 낱말이 없으면 -1을 answer에 넣고 있으면 인덱스값을 계산해서 answer에 넣어준다. 마지막으로 answer를 다시 int[] 로 변환 ➡️ Strea..

[프로그래머스][Java] 크기가 작은 부분 문자열

문제 프로그래머스 - 크기가 작은 부분 문자열 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 String p 의 길이 length_p 를 저장 문자열 t 에서 len 만큼 잘라서 long 타입으로 저장 (int 는 값이 작아 오류 발생) ❗️for문으로 순회하면서 substring ➡️ 인덱스 넘어가지 않도록 주의 String p를 Long 타입으로 변환 후, 작거나 같으면 answer 값 증가 코드 import java.util.ArrayList; import java.util.List; class Solution { public int solut..