목록Data Structure & Algorithm/PS - JAVA (270)
Dev.baelanche
짱짱 쉬운 스텍 문제이다. 설명은 생략하겠다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int k = sc.nextInt(); Stack s = new Stack(); while(k-->0) { int n = sc.nextInt(); if(n != 0) s.push(n); else s.pop(); } int sum = 0; while(!s.isEmpty()) { sum += s.pop(); } System.out.println(sum); } }
이전 세대에 그은 줄을 기억했다가 다음세대에 90도 꺾어서 긋는 방식은 머릿속에서 그려지지가 않았다. 드래곤커브의 순서를 적어봤더니 규칙이 있었다. 시작방향이 0일때의 세대별 방향이다. 선이 이어진대로 +1 하면서 진행되는 규칙을 찾을 수 있었다. x+1 = 4일때는 0으로 바꿔준다. 시작방향에 따른 방향을 정리하고 나머지 부분은 구현만 하면 된다. public class Main { static int a[][] = new int[101][101]; static int direction[][] = new int[4][1024]; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(n..
재귀함수를 처음 배울때 피보나치 수열과 함께 단골로 등장하는 문제이다. 하노이 탑 풀이 방법을 까먹어서 인터넷을 참고했다. 똑똑한 사람이 너무도 많아 아무데나 검색만 해도 자세한 풀이가 나온다. public class Main { static int cnt = 0; static StringBuilder sb = new StringBuilder(); public static void move(int from, int to) { cnt++; sb.append(from + " " + to + "\n"); } public static void hanoi(int n, int from, int by, int to) { if(n == 1) move(from, to); else { hanoi(n-1, from, to,..
n이 최대 20이라 문제에 나와있는 점화식을 가지고 재귀하여 풀면 된다. 나는 굳이 탑다운 방식으로 풀었다. public class Main { static int dp[]; public static int f(int k) { if(k == 0) return 0; if(k == 1) return 1; if(dp[k] != -1) return dp[k]; int ret = f(k-1) + f(k-2); dp[k] = ret; return ret; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); dp = new int[n+1]; Arrays.fill(dp, -1); Syste..
배열 단계에 있는 문제였는데 배열을 굳이 사용할 필요가 없다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int max = 0; int maxIdx = 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(); if(n % 4 == 0 && n % 100 != 0) System.out.println(1); else if(n % 400 == 0) System.out.println(1); else System.out.println(0); } }
각 자리수별로 곱셈을 진행한다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); System.out.println(a * (b%10)); System.out.println(a * ((b/10)%10)); System.out.println(a * (b/100)); System.out.println(a * b); } }
갑자기 단계별 문제에 추가되서 풀어봤다. \, ', " 등의 문자를 처리하는 문제이다. 사실 고양이가 귀여운 문제다. public class Main { public static void main(String[] args) { System.out.println("\\ /\\"); System.out.println(" ) ( \')"); System.out.println("( / )"); System.out.println(" \\(__)|"); } }