분류 전체보기 17

[Algorithm] 문자열 압축

1. 문제 알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축 단, 반복횟수가 1인 경우 생략합니다. 2. 예시 KKHSSSSSSSE => K2HS7E 3. 코드 import java.util.Scanner; /**문자열압축 * 알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복 * ->문자바로 오른쪽에 횟수표기 * ->반복횟수가 1인 경우 생략 * ex) KKHSSSSSSSE -> K2HS7E * */ public class Case11 { public String solution(String str) { StringBuilder ans = new StringBuilder(); str ..

[Algorithm] 가장 짧은 문자의 거리

1. 문제 한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리를 출력하는 프로그램을 작성 첫 번째 줄에 문자열 s와 문자 t가 주어진다. 문자열과 문자는 소문자로만 주어집니다. 문자열의 길이는 100을 넘지 않는다. 2. 예시 teachermode e => 1 0 1 2 1 0 1 2 2 1 0 3. 코드 import java.util.Scanner; /** * teachermode e -> 10121012210 * 문자열의 길이는 100을 넘지 않는다. */ public class Case10 { public int[] solution(String str, char cha) { int[] ans = new int[str.length()]; int p = 101; ..

[Algorithm] 숫자만 추출

1. 문제 문자와 숫자가 섞여있는 문자열이 주어지면 그 중 숫자만 추출하여 그 순서대로 자연수를 만듭니다. 2. 예시 tge0a1h205er => 01205 => 1205 3. 코드 import java.util.Scanner; public class Main { public int solution(String str){ char[] cha = str.toCharArray(); String ans = ""; for (char c : cha) { if (!Character.isAlphabetic(c)) { ans += c; } } return Integer.parseInt(ans); } public static void main(String[] args){ Main case9 = new Main(); Sc..

[Algorithm] 팰린드롬

1. 문제 팰린드롬 - 앞에서 읽을 때, 뒤에서 읽을 때 같은 문자열이 출력되는 것 문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력하는 프로그램을 작성. 단, 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 X 알파벳 이외의 문자들의 무시할 것. 2. 예시 found7, time: study; Yduts; emit, 7Dnuof -> YES apple, egg -> NO 3. 코드 import java.util.Scanner; public class Case8 { public String solution(String str){ String answer = "NO"; str = str.toUpperCase().replaceAll("[^A-Z]","")..

[Algorithm] 회문 문자열

1. 문제 앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 한다. 문자열이 입력되면 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력할 것. 단, 회문을 검사할 때 대소문자를 구분 X 2. 예시 gooG -> true gasfdg -> false 3. 코드 import java.util.Scanner; public class Main { public String solution(String str) { String ans = "YES"; str = str.toUpperCase(); for(int i =0;i goog goog를 반으로 나눈 길이는 2이므로 2만큼 for문을 돌리고, 맨 앞글자와 맨 뒷글자 - g, o, o, g에서 g!= g는 false이..

[Algorithm] 특정 문자 뒤집기

1. 문제 영어 알파벳과 특수문자로 구성된 문자열이 주어지면 영어 알파벳만 뒤집고, 특수문자는 자기 자리에 그대로 있는 문자열을 만들어 출력. 2. 예시 a!#$p#@pl!@e e!#$l#@pp!@a 3. 코드 이전 글에서는 그냥 문자뒤집기였다면 이번엔 특정문자 뒤집기다. 단어 뒤집기에서 이해 못 했던 방식을 이해하는데 도움이 됐다. 이전 글 - https://connect00t.tistory.com/11 [Algorithm] 단어 뒤집기 1. 문제 N개의 단어가 주어지면 각 단어를 뒤집어 출력하는 프로그램 작성 첫 줄에 자연수 N(3 re 예시 단어 하나를 예를 들어보자. apple 뒤집은 단어는 elppa가 리턴돼야 한다. ch.length -> 배열로 나눈 connect00t.tistory.com ..

[Algorithm] 단어 뒤집기

1. 문제 N개의 단어가 주어지면 각 단어를 뒤집어 출력하는 프로그램 작성 첫 줄에 자연수 N(3 re 예시 단어 하나를 예를 들어보자. apple 뒤집은 단어는 elppa가 리턴돼야 한다. ch.length -> 배열로 나눈 apple의 길이는 5이므로 5만큼 for문을 돌린다. re [0] = ch[5-1-0] -> re[0] = ch[4] -> re[0] = 4 re [0]에는 4번째 문자인 e를 저장한다. 위 방식으로 for문을 5번 돌리면 e, l, p, p, a로 뒤집히게 된다. char배열을 string으로 변환할 수 있는 메서드 -> String.valueOf(); ArrayList로 담아 리턴하면 성공 4. 마무리 StringBuilder 사용하고 '오, 이번엔 문제 꽤나 괜찮은걸? 엄청..

[Algorithm] 문장 속 단어

1. 문제 한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력해 보자. 문장 속의 각 단어는 공백으로 구분. 첫 줄에 가장 긴 단어를 출력한다. 가장 길이가 긴 단어가 여러 개일 경우 문장 속에서 가장 앞쪽에 위치한 단어 출력 2. 예시 It is timme to study study cat tiger lion puppy tiger 3. 코드 공백이 나오면 split을 사용해 문자열을 잘라 배열로 담아준다. 문장의 단어 중 가장 긴 단어를 찾으려면 단어의 길이를 확인해야 한다. 이때 비교대상이 필요하므로 int min = 0; 을 추가해 최소 길이 값을 만들어 놓는다. 여기서 조건에 음수가 있으면 int min = Integer.MIN_VALUE;로 넣어 음수 일 경우도 비교할 수 있도록 한다..

[Algorithm] 대소문자 변환하기

1. 문제 대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로 변환하여 출력 2. 예시 tiggggggEEEEEERRDDSSsldkf TIGGGGGGeeeeeerrddssSLDKF AppLe aPPlE 3. 코드 지난번 올린 문자열 찾기에 사용된 메서드나 객체를 사용했다. for문안에 if문을 생성해 대문자인지 소문자인지 확인 후, 대문자이면 소문자로 변환하고 소문자이면 대문자를 변환한다. 대소문자 확인여부 시 사용하는 메서드 isUpperCase()/isLowerCase() 4. 마무리 작성한 코드가 정상 코드로 확인받을 수 있지만, 아래처럼 더 간결하게 짤 수 있다. 향상된 for문을 사용해서 만들 수 있다는 것을 알고 있었지만 배열로 흩어진 char 형식을 어떻게 ..