목록알고리즘 (21)
끄적끄적
너무 복잡하게 생각해서 계속 시간 초과가 났다.. 함수를 새로 만들지 않고 그냥 for문으로 체크해주니 통과했다 ㅜ 효율성 1번에서만 시간초과가 발생한다면 현재 탐색할 길이가 그때까지 찾은 최대 길이보다 작으면 탐색하지 않는 방안을 생각해보자 import java.util.*; class Solution { public int solution(String s) { int maxLen = 1; //최대 길이는 항상 1 for(int i=0;i=i;j--){ //살펴볼 마지막 위치 int start = i; //start에 시작 위치저장 int last=j; //last에 마지막 위치 저장 boolean check=true; //팰린드롬이 가능한지 체크할 boolean변수 for(int k=0;klast-s..
조합 - 뽑힌 위치을 true로 저장. cnt를 센다 static int []visited; static int R,N; void cmbination(int target, int cnt){ if(cnt == R){ for(int i=0;i
큐를 이용하여 큐의 front 값을 변경하여 맨끝으로 삽입한다. 뺴주는 minus 변수가 5가 되면 다시 0으로 바꾸고 이러한 순환을 front에서 minus를 뺸값이 0보다 작을 때까지 반복한다. package day0804; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Password { public static void main(String[] args) throws IOException { // TOD..
처음 투포인터로 배열을 접근하는 방식으로 했다가 시간초과가 났다. 고민하다가 스택으로 풀었다. 왼쪽에서 오른쪽으로 가면서 스택에는 인덱스를 저장하는데 현재 값보다 작은 값이 저장될 필요가 없기에 빼주며 항상 값은 삽입한다. (스택의 제일 위보다 현재 값이 낮더라도 다음 값보다는 클 수 있기 떄문) 다르게는 인덱스와 탑 높이를 저장하는 클래스를 생성하여 이용할 수도 있겠다. 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..