목록알고리즘 (266)
Dev.baelanche
단순구현 문제라 정말 막풀었다. 변수 이름이라도 그나마 알아볼수 있게 서술했다;; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String s = sc.next(); int len = (s.length() * 5) - (s.length() - 1); drawSideLine(len); drawInnerLine(len); drawMiddleLine(len, s); drawInnerLine(len); drawSideLine(len); } public static void drawSideLine(int len) { int sideLine = 0; for(int i=1; i
입력을 컵홀더를 표시한 형태로 바꾼후 풀었다. 내가 짠 코드대로 하게되면 일반좌석만 있을경우에 출력이 오답이 나와서 그 부분만 예외처리했다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); String s = sc.next(); String s2 = s; s2 = s2.replaceAll("S", "*S*"); s2 = s2.replaceAll("LL", "*LL*"); s2 = s2.replaceAll("\\*\\*", "*"); int cnt = 0; for(int i=0; i
배열에 폭죽이 터질때의 시간을 저장한다. 폭죽이 동시에 터진다면 1개만 카운트한다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int c = sc.nextInt(); int a[] = new int[c+1]; int cnt = 0; for(int i=0; i
차례대로 A AND B, A OR B, A XOR B, NOT A, NOT B 를 출력하면 된다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); char a[] = sc.next().toCharArray(); char b[] = sc.next().toCharArray(); for(int i=0; i
배열에 이름과 키를 담아 키가 최대값인 이름만 출력시키면 된다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(true) { int n = sc.nextInt(); String s[][] = new String[n][2]; if(n==0) break; float max = 0; for(int i=0; i max ? Float.parseFloat(s[i][1]) : max; } String name = ""; for(int i=0; i
아기 상어가 도움을 요청하지 않고 사냥도 안하고 무한정 머무를 수 있으므로 문제에서 요구하는 것은 최소 시간이다. 따라서 BFS로 배열을 순회하면 되겠다. 탐색 조건이 까다로워 BFS 를 "잘" 구현해야한다. *조건 1. 물고기 크기가 상어보다 작아야 잡아먹을 수 있다. 2. 물고기 크기와 상어의 크기가 같다면 크 위치로 이동할 수 있지만 먹을수는 없다. 3. 잡아먹을 수 있는 물고기가 여러마리이면 가장 위쪽의 물고기를 먹는다. 3-1. 3번 조건에서 가장 위쪽에 물고기가 없다면 가장 왼쪽의 물고기를 먹는다. 4. 잡아먹을 수 있는 물고기가 없다면 엄마 상어를 부른다. 필자가 구현할 로직을 아래에 서술하겠다. 1. 아기 상어의 위치에서 BFS 를 한다. 2. 잡아먹을수 있는 물고기가 있으면 잡아먹고 BF..
길이가 1일때 10(1+1+1+1+...+1) 길이가 2일때 55(1+2+3+4+...+10) 길이가 3일때 220(1+3+6+10+...+55) 이다. dp[2][1] = dp[1][1] dp[2][2] = dp[1][1] + dp[1][2] dp[2][3] = dp[1][1] + dp[1][2] + dp[1][3] ...... 을 바탕으로 점화식을 세워 풀이한다. 각 인덱스를 더하면 자료형의 범위를 초과할 수 있으므로 매 연산마다 10007 로 나누어주고 마지막에도 나누어주면 되겠다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); in..
수열은 자주 나오는 DP 문제이다. 이곳에서 LCS에 대한 설명을 확인할 수 있다. 위에서 나온 설명대로 점화식을 구현하여 풀었다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String a = " " + sc.next(); String b = " " + sc.next(); int dp[][] = new int[b.length()][a.length()]; for(int i=1; i