String
1. 문자 찾기
풀이
package com.codingtest.Algorithm.Chapter1;
import java.util.Scanner;
public class Question1 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String input1 = in.nextLine();
String input2 = in.nextLine();
Integer answer = 0;
input1 = input1.toLowerCase();
input2 = input2.toLowerCase();
for (int i = 0; i < input1.length(); i++) {
if (input1.charAt(i) == input2.charAt(0)) answer++;
}
System.out.println(answer);
return;
}
}
Error
입력 문자열과 비교 문자열 모두 소문자로 변환해주어야 했다. 예시 입출력을 보고 입력 문자열만 소문자로 변환해주었다.
string의 길이 .lengtrh
string 인덱스 접근 charAt
Ref
자바 입출력 방식 (readInt, readLine) with Scanner
Java String ↔ Char
2. 대소문자 변환
package com.codingtest.Algorithm.Chapter1;
import java.util.Scanner;
public class 대소문자_변환 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
String answer = "";
for (int i = 0; i < str.length(); i++) {
Character c = str.charAt(i);
if (Character.isUpperCase(c)) answer = answer + Character.toLowerCase(c);
if (Character.isLowerCase(c)) answer = answer + Character.toUpperCase(c);
}
System.out.println(answer);
return;
}
}
Ref
string은 왜 함수로 s.toUpperCase()할 수 있고, char는 왜 Character.toUpperCase(c) 하는가 ?
3. 문장 속 단어
package com.codingtest.Algorithm.Chapter1;
import java.util.Scanner;
public class 문장_속_단어 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
String words[] = str.split(" ");
String answer = "";
for (int i = 0; i < words.length; i++) {
String word = words[i];
if (word.length() > answer.length()) answer = word;
}
System.out.println(answer);
return;
}
}
4. 단어 뒤집기
package com.codingtest.Algorithm.Chapter1.String;
import java.lang.reflect.Array;
import java.util.Scanner;
public class 단어_뒤집기 {
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int num = Integer.parseInt(in.nextLine());
String words[] = new String[num];
// 기존 단어 배열
for (int i = 0; i < num; i++) {
String str = in.nextLine();
words[i] = str;
}
// 역순 출력
for (int i = 0; i < num; i++) {
StringBuffer sb = new StringBuffer(words[i]);
System.out.println(sb.reverse().toString());
}
return ;
}
}
5. 특정 문자 뒤집기
package com.codingtest.Algorithm.Chapter1.String;
import java.util.Scanner;
public class 특정_문자_뒤집기 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
StringBuilder sb = new StringBuilder(str);
String temp = "";
for (int i = 0; i < sb.length(); i++) {
Character c = str.charAt(i);
if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) {
temp += c;
}
}
int lastIndex = temp.length() - 1;
for (int i = 0; i < sb.length(); i++) {
Character c = str.charAt(i);
if ((c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z')) {
sb.replace(i, i + 1, "" + temp.charAt(lastIndex));
lastIndex--;
}
}
System.out.println(sb.toString());
}
}
6. 중복 문자 제거
package com.codingtest.Algorithm.Chapter1;
import java.util.Scanner;
public class 중복_문자_제거 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
String answer = "";
for (int i = 0; i < str.length(); i++) {
if (!answer.contains("" + str.charAt(i))) answer += str.charAt(i);
}
System.out.println(answer);
return;
}
}
Ref
문자열 포함 여부 확인
java char to charequence
7. 회문 문자열
package com.codingtest.Algorithm.Chapter1;
import java.util.Scanner;
public class 회문_문자열 {
public static final String yes = "YES";
public static final String no = "NO";
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
String answer = yes;
str = str.toLowerCase();
for (int i = 0; i < str.length() / 2; i++) {
if (str.charAt(i) != str.charAt(str.length() - 1 - i)) answer = no;
}
System.out.println(answer);
return;
}
}
Ref
char 비교
string 비교
8. 유효한 팰린드롬
package com.codingtest.Algorithm.Chapter1;
import java.util.Scanner;
public class 유효한_팰린드롬 {
public static final String yes = "YES";
public static final String no = "NO";
// TODO : 대소문자 구분 없ㅇㅇ음
// TODO : 알파벳만 체크
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
String answer = yes;
String deletedChar = "";
for (int i = 0; i < str.length(); i++) {
Character c = str.charAt(i);
if (c.toString().matches("^[a-zA-Z]*$")) deletedChar += c;
}
deletedChar = deletedChar.toLowerCase();
for (int i = 0; i < deletedChar.length() / 2; i++) {
if (deletedChar.charAt(i) != deletedChar.charAt(deletedChar.length() - 1 - i)) {
answer = no;
}
}
System.out.println(answer);
}
}
9. 숫자만 추출
package com.codingtest.Algorithm.Chapter1;
import java.util.Scanner;
public class 숫자만_추출 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
String answer = "";
for (int i = 0; i < str.length(); i++) {
Character c = str.charAt(i);
if (c >= '0' && c <= '9') answer += c;
}
if (answer.length() != 0 && answer.charAt(0) == '0')
answer = answer.substring(1, answer.length());
System.out.println(Integer.parseInt(answer));
}
}
Ref
문자열 비교, ‘’ 랑 비교하기
string to int
10. 가장 짧은 문자거리
package com.codingtest.Algorithm.Chapter1;
import java.util.Arrays;
import java.util.Scanner;
public class 가장_짧은_문자거리_2 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.next();
String target = in.next();
String idxStr = "";
String answer = "";
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == target.charAt(0)) idxStr += i + " ";
}
String[] splitArray = idxStr.split(" ");
int[] idxArr = Arrays.stream(splitArray)
.mapToInt(Integer::parseInt)
.toArray();
for (int i = 0; i < str.length(); i++) {
int min = Integer.MAX_VALUE;
if (str.charAt(i) == target.charAt(0)) {
min = 0;
answer += min + " ";
continue;
}
for (int j = 0; j < idxArr.length; j++) {
int distance = Math.abs(i - idxArr[j]); //절댓값
if (distance < min) min = distance;
}
answer += min + " ";
}
answer = answer.substring(0, answer.length() - 1);
System.out.println(answer);
}
}
Ref
정수의 최대 최소 출력
절댓값 출력하기
print array value in java
11. 문자열 압축
package com.codingtest.Algorithm.Chapter1;
import java.util.HashMap;
import java.util.Scanner;
public class 문자열_압축 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String str = in.nextLine();
HashMap<Character, Integer> hm = new HashMap<>();
String answer = "";
for (int i = 0; i < str.length() - 1; i++) {
Character c = str.charAt(i);
if (hm.containsKey(c)) {
hm.put(c, hm.get(c) + 1);
}
if (!hm.containsKey(c)) {
hm.put(c, 1);
answer += c;
}
if (c != str.charAt(i + 1)) {
if (hm.get(c) == 1) {
hm.remove(c);
} else {
answer += hm.get(c);
hm.remove(c);
}
}
}
if (hm.isEmpty()) {
answer += str.charAt(str.length() - 1);
} else {
int tempCnt = hm.get(str.charAt(str.length() - 1)) + 1;
answer += tempCnt;
}
System.out.println(answer);
}
}
Ref
Java Integer 비교법
12. 암호
package com.codingtest.Algorithm.Chapter1;
import java.util.Scanner;
public class 암호 {
private static int CODE_LENGTH = 7;
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int len = Integer.parseInt(in.nextLine());
String message = in.nextLine();
String messArr[] = new String[len];
String answer = "";
int idx = 0;
for (int i = 0; i < len; i++) {
messArr[i] = message.substring(idx, idx+7);
idx += 7;
}
for (int i = 0; i < len; i++) {
String code = messArr[i];
String tempCode = "";
for (int j = 0; j < CODE_LENGTH; j++) {
if (code.charAt(j) == '*') {
tempCode += '0';
}
if (code.charAt(j) == '#') {
tempCode += '1';
}
}
messArr[i] = tempCode;
}
for (int i = 0; i < len; i++) {
int binaryToDecimal = Integer.parseInt(messArr[i], 2);
answer += (char) binaryToDecimal;
}
System.out.println(answer);
}
}
Last updated