본문 바로가기

알고리즘 문제풀이

(51)
[알고리즘] 백준1890 - 점프 java import java.io.*; import java.util.*; /* dfs처럼 풀었을때 문제점 -> 중복되는 연산이 생긴다 중복되는연산을 어떻게 줄일까? -> 값을 저장하는 배열을 하나 만든다. -> 큐를 이용하여 값 저장 -> 실수한 부분 끝지점 나오면 큐에서 break; 걸어서 나오게 짰는데 마지막 지점 도착했다고 해서 이전에 경우의수가 없는게 아님 -> 왜인지 생각해볼것 */ public class B1890점프_두번째풀이 { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int size = Integer.p..
[알고리즘] 백준1986 - 체스 java import java.util.*; import java.io.*; /* 입력받고 말 종류별로 좌표 list에 저장 해놓고 각각 안전하지않은 영역 모두 -1로 처리 퀸 -> 가로, 세로, 대각선으로 쭉 이동가능, 장애물 만나면 더이상 못감 나이트 -> 거리 3이동 가능하고 x,y좌표 둘다 겹치지 않는곳만 가능 폰 -> 그냥 장애물 역할 */ public class 백준체스1986 { static int sero ; static int garo ; static int[][] arr; static boolean check(int i, int j) { if(1
[알고리즘] 백준1063 - 킹 java package a0303; import java.io.*; import java.util.*; /* 좌표 이동을 해야돼서 좌표로 변환 해야할듯 문자는 -A+1로 변환한다. */ public class B킹_1063 { static int kingx ; static int kingy ; static int stonex; static int stoney; static boolean check(int i, int j) { if(1
[알고리즘] 백준5566 - 주사위게임 java package a0303; import java.util.*; /* 도착점 지시사항 따라 계속 가는게 아니라 주사위 던진 직후만 한번더 지시사항 따르는것인듯? */ public class B5566주사위게임 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int size = sc.nextInt(); int turn = sc.nextInt(); int[] arr = new int[size]; for(int i=0; i=size-1) { cnt = i; break; } } System.out.println(cnt); } }
[알고리즘] 백준1347 - 미로탐색 java package a0303; import java.io.BufferedReader; import java.util.*; import java.io.*; /* 아이디어 -> 초기 좌표 50,50으로 설정하고 좌표상에서 움직인곳은 모두 1로 처리 움직일때마다 x의 최소 최대좌표, y의 최소 최대좌표를 구한다. -> 나중에 for문으로 최소 최대를 범위로 잡고 배열 돌면서 1로 표시된 곳은 "."을 출력, 아닌곳은 "#"을 출력한다. */ public class B1347미로탐색 { public static void main(String[] args) throws Exception{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in))..
[알고리즘] 백준2606 - 바이러스 java package a0303; import java.util.*; import java.io.*; /* visit배열 하나 만들고 연결된곳 관리하면서 visit처리된 수 세면 될듯? */ public class 백준2606바이러스 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt(); int[] visit = new int[num+1]; int[][] arr = new int[num+1][num+1]; int size = sc.nextInt(); for(int i=0; i
[알고리즘] 백준1759 - 암호만들기 java package a0221; import java.util.*; public class 백준1759암호만들기 { static int psize; static int numsize; static char[] nums; static char[] result; static void print() {//result 출력 for(int i=0; i=2)return true; return false; } static void find(int cnt, int idx) { if(cnt==psize) { if(check())print(); return; } for(int i=idx; i
[알고리즘] 백준14501 - 퇴사 java package a0222; import java.util.*; public class 백준퇴사 { static int n; static int[] time; static int[] money; static int maxmoney; static void findmax(int cnt, int sum) { if(time[cnt] > n-cnt)return; maxmoney = Math.max(sum, maxmoney); //System.out.println("cnt:"+cnt+" maxmoney:"+maxmoney); for(int i=time[cnt]+cnt; i