목록전체 글 (42)
끄적끄적
처음 투포인터로 배열을 접근하는 방식으로 했다가 시간초과가 났다. 고민하다가 스택으로 풀었다. 왼쪽에서 오른쪽으로 가면서 스택에는 인덱스를 저장하는데 현재 값보다 작은 값이 저장될 필요가 없기에 빼주며 항상 값은 삽입한다. (스택의 제일 위보다 현재 값이 낮더라도 다음 값보다는 클 수 있기 떄문) 다르게는 인덱스와 탑 높이를 저장하는 클래스를 생성하여 이용할 수도 있겠다. package day0804; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.Stack; imp..
출력을 유심히 보자 ---이 아닌 ___이다. 재귀를 돌 때 들어온 횟수를 통해 ____를 몇번 반복할 지 결정한다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Q17478 { public static void main(String [] args) throws IOException { BufferedReader bf= new BufferedReader(new InputStreamReader(System.in)); int i=Integer.parseInt(bf.readLine()); System.out.println("어느 한 컴퓨터공학과 학생이 유명한 교수님을..
인덱스를 접근하는 것에서 또한 문제에서 20마다 줄바꿈 해주는것도 유의해서 봤어야했다. 배운점 백준에서 마지막에 공백이 들어가도 인정해 주는것을 알게되었다. 배수를 검색할때 for문에서 i++이 아닌 i+=index 로 뛰면 배수만 검색할 수 있다. 0부터 시작하는 배열로 인에 혼동이 올때는 1부터 입력받자 package day0802; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Q1244 { public static void main(String[] args) throws IOException { ..
그리디 문제로 앞에서부터 같은 위치에서 정답과 현재 문자열의 문자가 다르면 현재 위치부터 끝까지 숫자를 바꾼다. public class SwExpertMemoryRecovery { public static void main(String[] args) throws IOException { // TODO Auto-generated method stub BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int test = Integer.parseInt(br.readLine()); for (int t = 0; t < test; t++) { String s = br.readLine(); int[] ans = new int[s.len..
boolean 배열로 방문 여부를 체크한다. 방문하였거나 인덱스를 벗어났으면 시계방향으로 방향을 회전한다. package day0803; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Snail { static int [][]arr; public static void main(String[] args) throws IOException { // TODO Auto-generated method stub BufferedReader bf= new BufferedReader(new InputStreamReader(System.in)); int test=Integer.pa..
100 x 100 배열에서 arr[i][j]=2인 곳을 목적지로 하는 arr[0][i]의 i를 찾는 문제이다. 같은 방향으로 나아가다가 다음 위치에 1이 아니거나 다음 위치가 인덱스를 벗어나면 방향을 바꾼다. 아래로만 향하고 오른쪽이나 왼쪽이 있으면 방향을 바꾸며 나아간다. 재귀를 통해 반복하다가 arr[i][j]=2이면 탈출한다. package day0803; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Ladder { static int [][]arr; static int ans; public st..
ArrayList를 통해 배열을 정렬하고 가장 큰수에서 1을 빼고 가장 작은수에서 1을 더한다. 재귀를 통해 지정된 횟수만큼 반복하면서 매번 sort해준다. package day0803; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.StringTokenizer; public class Flatten { public static void main(String[] args) throws IOException { //..
방향을 저장하여 앞으로 그 방향으로 나아갈 수 있으면 방향을 바꾸고 한칸 나아가고 아닐 경우 방향만 바꿔준다. 또한 총이 나아갈 때 장애물이 없다면 장애물에 부딛칠 때까지 나아가야 하므로 while문으로 통해 반복해야한다. 나는 현재 위치를 전역변수로 저장하였고, while문에서는 현재 위치와 총의 위치를 따로 매개변수로 입력받아 처리하였다. package day0803; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class BattleField { static int H, W; static int direct..