목록구현 (59)
Dev.baelanche
별찍기 문제집은 다 풀었는데 다른 별찍기를 찾았다 ㅋㅋ n에 따른 배열의 크기를 보면 2^n * 2^n 이다. 별은 가로, 세로 둘다 절반만큼의 크기로 왼쪽 위, 오른쪽 위, 왼쪽 아래 3군데에 똑같은 모양으로 그려져 있다. 가로, 세로 길이를 2배로 늘려가며 패턴을 3군데에 똑같이 그려주면 된다. public class Main { static char a[][]; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int l = (int)Math.pow(2, n); a = new char[l][l]; for(int i=0; i
알고리즘 문제에서 시계, 달력 문제는 참 단골 문제같다. 시, 분, 초가 각각 24, 60, 60 미만으로 되게 만들어주면 된다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); int d = sc.nextInt(); c += d; b += c/60; c %= 60; a += b/60; b %= 60; a %= 24; System.out.println(a + " " + b + " " + c); } }
뭔가 문제 설명이 불친절한 느낌이다. 가로, 세로 방향으로 탐색하며 1x2 크기 이상의 공간이 있다면 카운트한다. public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLine()); int a[][] = new int[n][n]; 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 a = sc.nextInt(); int b = sc.nextInt(); int i; boolean m = false; for(i=1; n>=2; i++) { int arr[] = new int[n+1]; arr[a] = 1; arr[b] = 1; for(int start=1; start
도착시간과 떠난시간 사이의 트럭 개수를 출력하여 맞는 요금을 부여하면 된다. public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int c = sc.nextInt(); int truck[][] = new int[3][2]; for(int i=0; i truck[2][1]) break; } System.out.println(cost); } }
야바위를 할때마다 자리를 스왑해주면된다. 공이 사라지는 경우는 없다;;;; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int m = sc.nextInt(); int a[] = new int[4]; a[1] = 1; while(m-->0) { int x = sc.nextInt(); int y = sc.nextInt(); swap(a, x, y); } for(int i=1; i
이전 세대에 그은 줄을 기억했다가 다음세대에 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,..