본문 바로가기

전체 글

(37)
Java_객체 형변환 객체 형변환 "=" 연산자를 기준으로 좌변과 우변의 데이터 타입이 다른 경우에 발생(두 데이터 타입이 서로 상속 관계인 경우만 가능!) 묵시적 형변환 개념 Parent p = new Child(); 자식 객체를 부모 객체에 할당할 때 묵시적 형변환 발생 Child class에서 Parent 메소드를 오버라이딩한 경우 p로 해당 메소드 영역 자동 접근되어짐 활용 예시 Parent를 상속받는 여러 개의 자식 클래스 타입을 인자로 받는 메소드 생성 시 주로 사용 public void print(Parent p) => p는 Parent, Child 타입 모두 받을 수 있음 명시적 형변환 개념 Child c = (Child) p; => 전제조건 : p는 앞에서 묵시적 형변환 된 객체임 앞서 묵시적 형변환 된 부모..
백준_15685_드래곤 커브 문제 링크 조건 x : 커브 시작 열의 위치 y : 커브 시작 행의 위치 d : 커브 방향 ( 0 0) { StringTokenizer st = new StringTokenizer(br.readLine().trim(), " "); baseC = Integer.parseInt(st.nextToken()); baseR = Integer.parseInt(st.nextToken()); d = Integer.parseInt(st.nextToken());//방향 g = Integer.parseInt(st.nextToken());//세대 int size = (int) Math.pow(2, g); for(int i = 0; i
백준_20055_컨베이어 벨트 위의 로봇 문제 링크 조건 N : 벨트 한 쪽 면 길이 (2 sp 순으로 로봇 위치 +1 int cur = ep; while(cur != sp) { if(robot[cur]) { int next = cur == len ? 1 : cur+1; if(!robot[next] && strong[next] > 0) {//이동 위치에 로봇 없고 내구도 0 이상 robot[cur] = false; if(next != ep) robot[next] = true;///////// 내려가는 위치에 도착하면 로봇 바로 내려줌!! ////////// if(--strong[next] == 0) K--; } } if(--cur == 0) cur = len; } //3. sp에 로봇 없으면 올림 if(!robot[sp] && strong[sp..
백준_내리막길_1520 문제 링크 조건 지도의 크기 : M x N (1 = 0) { // 이미 이전에 탐색했던 길 return memo[r][c]; } if(memo[r][c] == -1) { // 최초로 방문한 경우 방문체크 memo[r][c] = 0; } int nr,nc; for(int i = 0; i = R || nc = C || height[r][c] 가지치기 memo[r][c] += dfs(nr,nc); } return memo[r][c]; } } 리뷰 dfs는 깊이 우선 탐색이라 N이 클 경우 무조건 시간초과가 남! => dfs와 가지치기, 메모이제이션은 항상 묶어서 생각할 것
백준_합이0인네정수_7453 문제 링크 조건 n개의 배열 4개(A, B, C, D) : 1 ans변수 long 타입 선언 솔루션 public class Main { static int n;//배열 크기 static int[][] num; static int[] sumA, sumB; public static void main(String[] args) throws NumberFormatException, IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); n = Integer.parseInt(br.readLine().trim()); num = new int[4][n]; for(int i = 0; i < n; i++) { Strin..
백준_단어수학_1339 문제 링크 조건 N : 단어 개수, 1~10 이하 모든 단어에 포함된 알파벳 개수는 최대 10개 접근 방법 Greedy alpha[] 배열에 각 알파벳 위치에 해당하는 자릿수 가중치를 누적함 alpha 배열을 가중치 기준 오름차순 정렬 가중치 누적합이 가장 높은 순으로 높은 value(숫자) 부여해 최종 sum을 구함 Brute Force N개의 문자에 등장한 알파벳 순서를 alpha[] 배열에 저장함(인덱싱) 위에 등장한 알파벳 개수(size)만큼 순열 dfs 순열이 완성되면 checkAns()로 최종 sum을 구함 솔루션 Greedy => 132ms public class Main { static int N;//단어 개수 static int[] alpha;//알파벳별 대칭 숫자값 public stat..
백준_진우의민트초코우유_20208 문제 링크 조건 N : 마을 크기 NxN M : 초기체력 H : 회복 체력, 민트초코우유를 마시면 H만큼 회복됨 접근 방법 민트초코우유의 총합은 10개를 넘지 않음 mint 리스트에 10개의 우유 위치를 넣고 부분집합(조합) max(진우가 마실 수 있는 우유의 최대개수)값을 갱신할 수 있는 경우에만 순열 dfs 진행 => 위의 조합으로 선정된 우유들(ori)을 기준으로 마실 순서 정하기 위해 순열 dfs 진행 시, 다음 우유까지 먹으러 갈 체력이 있는지 확인 선정된 우유를 모두 마신 경우(flag == ori) 현 위치에서 집까지 돌아갈 체력이 남아있다면 max값 cnt로 갱신 솔루션 public class Main { static int N, M, H;//맵 N*N, 초기체력, 회복체력 static L..
백준_가르침_1062 문제 링크 조건 모든 단어는 anti 로 시작, tica 로 끝남 접근 방법 a , c , i , n , t 5개의 문자는 기본으로 배워야 함 check[] boolean 배열에 5개의 문자는 true로 표시 나머지 21개 문자를 대상으로 조합 dfs 조합 결과를 기준으로 읽을 수 있는 문자 개수 카운트 솔루션 public class Main { static int N,K;//단어 개수, 가르칠 글자 개수 static int[] combi; static boolean[] check; static String[] words; static int max; public static void main(String[] args) throws IOException { BufferedReader br = new Bu..