단순하게 배열에 넣고 탐색하면 끝나는 문제 import java.util.ArrayList; import java.util.Scanner; public class Main { public ArrayList solution(int n, int[] arr) { ArrayList answer = new ArrayList(); answer.add(arr[0]); //첫 번째 수는 무조건 출력이므로 arraylist에 추가 for (int i = 1 ; i arr[i-1]) answer.add(arr[i]); return answer; } public static void main(String[] args){ Main T = new Main(); Scanner kb = new Scanner(System.in); ..
import java.util.ArrayList; import java.util.Scanner; public class Main { public String solution(int n, String s) { String answer =""; for (int i = 0; i < n; i++) { //n개의 문자가 만들어져야함 String tmp = s.substring(0,7).replace('#', '1').replace('*','0'); //0~7번인덱스까지 분리해서 대체 int num = Integer.parseInt(tmp, 2); answer += (char)num; // System.out.println(tmp+ " "+num); s=s.substring(7); //이 코드가 없으면 앞의 7글자..
변수 i로 탐색 cnt = 1로 초기화를 해준다. (가장 왼쪽부터 단어가 있기 때문에) i == i+1과 비교를 하여 참이면 cnt를 증가시키고 거짓이면 answer에 단어를 누적을 시킨다. 그리고 cnt도 1일 경우엔 생략을 해야하므로 1보다 큰 경우에 String화 해서 answer에 누적시킨 후 작업이 완료되면 다시 cnt를 1로 초기화 시킨다. import java.util.ArrayList; import java.util.Scanner; public class Main { public String solution(String s) { String answer =""; s = s + " "; //s 맨 뒤에 빈 문자 추가 int cnt = 1; for (int i = 0; i < s.length(..
p=1000으로 잡는 이유는 첫 글자처럼 왼쪽 or 오른쪽에 타겟문자 없을 경우 거리를 큰 숫자로 해야 반대 방향의 거리가 작은 값이 되어 선택되기 때문이다. import java.util.ArrayList; import java.util.Scanner; public class Main { public int[] solution(String s, char t) { int [] answer = new int[s.length()];//s의 길이(0~10)만큼 동적으로 int 배열 만듦 int p=1000; //왼쪽으로부터 떨어진 거리 for (int i = 0; i < s.length(); i++) { if(s.charAt(i)==t){ //i가 t문자(타겟)가 맞으면 p=0; answer[i]=p; } e..
import java.util.ArrayList; import java.util.Scanner; public class Main { public String solution(String s) { String answer = "NO"; //Yes인지 No인지 리턴을 해야하기 때문에 기본 답을 NO로 지정 s=s.toUpperCase().replaceAll("[^A-Z]", ""); //입력받은 문자열을 전부 대문자로 변환 //정규식을 이용하여 대문자 A-Z까지가 아니면 전부 없앰 //^:부정 String tmp = new StringBuilder(s).reverse().toString(); if(s.equals(tmp)) { answer="YES"; } return answer; } public stati..
1. 기본 gooG ->4/2=2 나눠서 나온 몫 전까지만 돌리면된다. (인덱스 번호 2전까지만) i 5/2 -> 0,1까지만 돌면 됨(가운데는 대칭이므로 비교하지 않아도 됨) import java.util.ArrayList; import java.util.Scanner; public class Main { public String solution(String str) { String answer = "YES"; //Yes인지 No인지 리턴을 해야하기 때문 str=str.toUpperCase();//대소문자 구분없게 하려고 하나로 통일 int len= str.length(); for (int i = 0; i < len / 2; i++) { //비교 if(str.char..
import java.util.ArrayList; import java.util.Scanner; public class Main { public String solution(String str) { String answer = ""; for (int i = 0; i < str.length(); i++) { // System.out.println(str.charAt(i)+" " +i+" "+str.indexOf(str.charAt(i))); //인덱스 번호 + 처음으로 발견된 인덱스 번호 if(str.indexOf(str.charAt(i))==i) {//str.charAt(i) : 처음 발견된 인덱스 위치, i : 현재 그 문자의 위치 //서로 다르면 중복된 문자라는 뜻 answer+=str.charAt(..