본문 바로가기

Algorithm/Programmers14

[PCCP모의고사2] 3번 카페 확장 JAVA 문제 (구현) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 0초 부터 손님이 마지막으로 입장할 시간의 초까지 for문으로 돌리면서 계산하였다. i초 동안 반복하면서 1. 음료가 만들어지는 경우 / 2. 손님이 들어오는 경우 두 가지를 처리하면서 현재 인원을 계산했다. 여기서 내가 실수했던 부분은 음료가 다 만들어져서 사람이 나가자마자 바로 다음 음료를 만드는 것으로 구현했는데, 사람이 한 명 더 들어오기 전에 음료 제조가 끝나는 경우도 생각을 해주어야 했다. 그래서 처음에 몇몇 테스트케이스가 맞지않아서 해당 질문 목록에 있는 반례 예시로 다시.. 2024. 2. 19.
[PCCP모의고사2] 2번 신입사원 교육 JAVA 문제 (우선순위 큐) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 처음에는 Arrays.sort() 사용하여 매번 반복해서 정렬 후 앞 2개를 뽑아내서 더해줬었다. 시간초과 날 것 같긴했는데 역시나..ㅎ 제일 작은 수를 뽑아내기 위해 정렬말고 다른 자료 구조를 써야 효과적으로 뽑아낼 수 있을까 고민했는데 결국에는 구글링을 통해 Priority Queue(우선순위큐) 를 이용해야 한다는 것을 알게 되었다. 우선순위큐 자체는 자바에 내장되어 있는 자료구조를 바로 이용하면 되서 구현은 참 쉬웠지만 내부적인 원리를 이해하려면 조금 각잡고 트리 공부를.. 2024. 2. 19.
[PCCP모의고사2] 1번 실습용 로봇 JAVA 문제 (구현) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 문제에 나온대로 명령어 4개에 따른 이동값을 분기별로 처리해주었다. R : 오른쪽 90도 회전 L : 왼쪽 90도 회전 G : 한칸 전진 B : 한칸 후진 기본 세팅값은 direction = 0, (0,0) 위치이고 G와 B의 이동 수식은 배열을 이용하였다. G기준일 때 방향에 따라 아래와 같이 움직이고, B은 반대이므로 *-1 해주면서 그대로 배열을 사용했다. direction [0] [1] [2] [3] dx = {0, 1, 0, -1} dy = {1, 0, -1, 0} 소스 코드.. 2024. 2. 17.
[프로그래머스] 행렬 테두리 회전하기 자바 문제 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 풀이 처음에는 행렬이 1부터 순서대로 시작하니까 굳이 행렬을 계속 갱신하지 않고 풀이할 수 있지 않을까 생각했는데 그냥 직접 행렬을 rotation해주는게 답인 것 같아서 로테이션 함수를 따로 만들어주었다. ✔️ rotation함수 1. 행렬의 각 꼭짓점 부분을 t1, t2, t3, t4 변수를 이용하여 처음에 보관 2. temp변수를 이용하여 기존의 행렬값 보관 3. before변수를 이용해 temp값을 한 번 더 보관하여 다음 수를 갱신할 수 있도록 함 4. 이 때 flag변수로 반복문의 첫번째.. 2022. 10. 5.
[프로그래머스] 보석 쇼핑 자바 문제 코딩테스트 연습 - 보석 쇼핑 ["DIA", "RUBY", "RUBY", "DIA", "DIA", "EMERALD", "SAPPHIRE", "DIA"] [3, 7] programmers.co.kr 문제 풀이 ✔️ 알고리즘 1. Set 자료구조를 이용하여 보석의 종류 개수를 구함. 2. gems배열을 편하게 카운팅 하기 위하여 HashMap으로 보석이름과 인덱스를 매칭해줌 3. gems배열을 순회하면서 모든 종류의 보석을 담았을 경우 인덱스 갱신해줌 - sidx, eidx 둘 다 처음으로 지정한 후 모든 보석의 종류를 담을 때까지 eidx를 증가한다. - 이 때, 증가하면서 나온 보석들을 종류별로 카운팅해주는데 sidx를 다음 값으로 옮겼을 때, 같은 보석일 경우 바로 갱신을 해주고, 다른 보석일 경.. 2022. 4. 25.
[프로그래머스] 자물쇠와 열쇠 자바 문제 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 문제 풀이 1. 행렬 좌표값 받아 둘 Point 클래스 선언 //좌표 클래스 class Point { int r, c; public Point(int r, int c) { this.r = r; this.c = c; } } 2. key의 돌기, lock의 홈 좌표를 받아둘 두 개의 ArrayList 생성 - lockList - keyList 3. lockList : r, c가 작은 값부터 정렬 4. keyList는 각도 회전이 가능하므로 총 4가지 방법으로 정렬을 함 - r↑ c↑ - r↑ c↓ - r↓ c.. 2022. 3. 8.