Java 코딩테스트 공부/Java 백준 문제풀이

백준 String(문자열) 문제풀이

daramG 2022. 6. 1. 15:21

 

백준 11719 그대로 출력하기

 

문제 : NULL이 입력(ctrl+z) 될 때 까지 입력받은 그대로 심지어 그냥 엔터나 공백까지도 그대로 출력하기

 

소스코드1

import java.util.*;
import java.io.*;

class Main {
	/*
	public StringBuilder solution(String str) {
		StringBuilder answer = new StringBuilder("");

		return answer;
	}
	*/

	public static void main(String[] args) throws Exception {
		//Main T = new Main();
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		String str = "";
		while ((str = br.readLine()) != null) {
			System.out.println(str);
		}
	}
}

 

소스코드2

import java.util.*;
import java.io.*;

class Main {

	public static void main(String[] args) throws Exception {
		//Main T = new Main();
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		String str = "";
		while (true) {
			str = br.readLine();
			if (str == null) { break; }
			bw.write(str);
			bw.newLine();
			bw.flush();
		}
		bw.close();
		System.out.println("end");
	}
}

 

 

 

백준 1259 팰린드롬수

 

문제 : 어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다. 'radar', 'sees'는 팰린드롬이다.

0이 앞에 올 경우, 예를 들어 010은 팰린드롬수가 아니다.

입력 마지막 줄 에는 0이 주어지며 이 줄은 문제에 포함되지 않는다.

 

소스코드

import java.util.*;

class Main {
	public String solution(String str) {
		StringBuilder answer = new StringBuilder("");
		for (char x : str.toCharArray()) {
			answer.append(x);
		}
		if (answer.length() > 1 && answer.charAt(0) == '0') answer = answer.deleteCharAt(0);
		String originString = answer.toString();
		String reverseString = answer.reverse().toString();
		
		if (originString.equals(reverseString)) return "yes";
		else return "no";
	}

	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		String str = "";
		while (true) {
			str = kb.nextLine();
			if (str.equals("0")) break;
			System.out.println(T.solution(str));
		}
	}
}

==은 주소값을 비교하고, equals 는 대상의 내용 자체를 비교한다.

 

 

출처 : https://thisisprogrammingworld.tistory.com/142

 

 

nextInt( )사용 후 nextLine( ) 사용법

 

이렇게 nextInt() 사용 후 nextLine()을 사용할 경우 공백이 입력으로 처리되어 다음과 같은 문제가 발생한다.

 

 

해결방법 :

다음과 같이 nextLine() 처리를 해주면 된다.

 

 

백준 9093 단어 뒤집기

 

문제 :

문제출처 : https://www.acmicpc.net/problem/9093

 

소스코드 :

import java.util.*;

class Main {
	public StringBuilder solution(String str) { // daramG and dotori is good
		StringBuilder sb = new StringBuilder("");
		StringBuilder answer = new StringBuilder("");
		String[] s = str.split(" "); // daramG,and,dotori,is,good  // s[0] = "daramG", ...
		for (String x : s) {
			for(int i=0; i<x.length(); i++) {
				sb.append(x.charAt(i));
			}
			sb = sb.reverse();
			answer.append(sb);
			answer.append(" ");
			sb.setLength(0);
		}
		return answer;
	}

	public static void main(String[] args) {
		Main T = new Main();
		Scanner kb = new Scanner(System.in);
		int num = kb.nextInt();
		kb.nextLine();
		String str = "";
		for (int i=0; i<num; i++) {
			str = kb.nextLine(); // daramG and dotori is good
			System.out.println(T.solution(str));
		}
	}
}

훨씬 가볍게 풀 수 있는 방법이 있는데 다음에 해보겠다.