[프로그래머스] PS/Java 64

[lv2/pccp 기출 3번] 충돌위험 찾기 - JAVA

https://school.programmers.co.kr/learn/courses/30/lessons/340211 이게 왜 2레벨인지 진짜 모름 어려웠던 요인1. 거쳐가야 할 포인트 수가 가변적이다.2. 로봇의 도착 시점은 제각각이다. (도착 표시 따로하고, 도착한건 이동 로직 미포함 해야 함)3. 도착과 맵 밖으로 나감이 따로 존재하고, 시작과 최초 도착시에도 충돌 체크를 해야 한다. 풀이 1. 로봇이 거쳐가야 할 포인트를 실제 좌표로 바꿔놓는다. = move[] 2. while 루프를 돌며, 2-1. 충돌 체크충돌 체크는 로봇의 시작지점(0초인 경우)에서도 이뤄져야 하기 때문에, 이동 동작보다 먼저 한다. 2차원 배열로 하면, 매 순간 100*100 크기를 선언해야 해서map에 key = r + "..

[lv2] 예상 대진표

https://school.programmers.co.kr/learn/courses/30/lessons/12985?language=java 참가자 N은 항상 짝수로 주어지므로 부전승인 경우는 없다.A와 B가 만나지 않는 경우도 없다. import java.util.*;class Solution{ public int solution(int n, int a, int b) { int answer = 1; int A = Math.min(a, b); int B = Math.max(a, b); while(true) { if(B - A == 1 && A % 2 == 1) return answer; answer++; A = (int) Math.ceil((..

[lv2] 단체사진 찍기

https://school.programmers.co.kr/learn/courses/30/lessons/1835# 구현 문제 문제에서 조합으로 8명의 친구들을 뽑는 경우의 수는 8! = 40320이므로,조합으로 일단 뽑고 100개의 조건을 모든 조합에 대해 판별해도 시간이 널널하다. 특이 사항전역변수로 answer을 선언하면, solution 메서드 스코프에서 answer  변수 초기화를 해줘야한다. 아니면 오답을 받는다.(프그스 풀면서 처음 보는 패턴이었다;;)https://school.programmers.co.kr/questions/13442 class Solution { static int answer, F = 8, D; static char[] pick = new char[F], frd = ..

[lv4] 도둑질

https://school.programmers.co.kr/learn/courses/30/lessons/42897 시간 제한 빡빡한 원형 DP 문제다.  풀이 1. 원형 DP (0번째 집을 훔쳤으면, M-1번째 집을 훔칠 수 없음)=> 배열 idx를 0 ~ M-2, 1 ~ M-1 까지 고려하는 경우로 나누어 DP를 2번 수행한다. 2. DP기록 dp[i][0], dp[i][1]을 각각 i번째 집을 안훔치는/훔치는 경우로 두었는데, 이것만으로도 시간 초과가 난다.=> 배열 대신에 변수에 기록하고, swap하며 탐색한다.   시간 초과 코드더보기// 시간 초과 1. 2차원 DP 배열 2개 + money 배열 2개 사용 import java.util.*; class Solution {     public in..

[lv3] 표현 가능한 이진트리

https://school.programmers.co.kr/learn/courses/30/lessons/150367#   1. 입력 전처리 {1,3,7,15,31,63}는 각각 높이가 1 ~ 6인 포화 이진 트리의 노드 개수이다. 주어진 입력을 2진법으로 변환했을 때, 비트(= 노드)개수가 모자라다면 그만큼 앞에 0(= 더미 노드)을 채워준다. 이는 포화 이진 트리를 만드는 과정이다. e.g.)2 -> 01(2) -> 001(2)  2. 가능한 해인지 판별 true인 조건은 다음과 같다. (0 : 더미 노드, 1 : 더미가 아닌 노드) - 루트 노드는 반드시 1이어야 한다.- 자식 노드가 0이라면, 부모 노드는 0 or 1이어야 한다.- 자식 노드가 1이라면, 부모 노드는 1이어야 한다. 재귀를 통해, ..