백준 TEST07_문자열 사용하기

baekjoon_java

백준 TEST07_문자열 사용하기

필요한 패키지 및 외부 클래스

1
2
3
4
5
6
7
package test_java;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;



아스키코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class TEST07_01{
public TEST07_01() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

String n = br.readLine();
int a = n.charAt(0);
// n에 담겨진 첫번째 문자(0번쨰)를 캐릭터형으로 변환후 다시 정수형으로 변환.

bw.write(a +"\n");
bw.flush();
bw.close();
}
}

알파벳 찾기 (이클립스 상 답이 맞지만 어째서인지 오답처리됨.)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
class TEST07_02_t{
public TEST07_02_t() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int count=0;
int null_num = -1;
String S = null;
String str = "abcdefghijklmnopqrstuvwxyz";
while(true){
S = br.readLine();

if(S.length()<101){
for(int i=0;i<S.length();i++){
char chrInput = S.charAt(i);
if (chrInput >= 0x61 && chrInput <= 0x7A) { count++; }
// 입력받은 값 처음부터 끝까지 소문자인지 비교하고 비교후 count값을 올린다.
}// for end
//System.out.println(S.length() +" break를 탈출" + count + " break를 탈출");
if(count == S.length()){ break; } //카운트값과 문자열의 길이가 같다면 무한반복 탈출.
}
}// while end

for(int i=0;i<str.length();i++){
int a = 0;

for(int j=0;j<S.length();j++){
if(j >= 1 && S.charAt(j-1) == S.charAt(j)){
continue;
}

if(str.charAt(i) == S.charAt(j)){
bw.write(j + " ");
a++;
}

}
if(a==0){
bw.write(null_num + " ");
}
}

bw.flush();
bw.close();
}
}

알파벳 찾기 (정답)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
class TEST07_02_A{
public TEST07_02_A() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int count=0;
String S = null;
while(true){
S = br.readLine();

if(S.length()<101){
for(int i=0;i<S.length();i++){
char chrInput = S.charAt(i);
if (chrInput >= 0x61 && chrInput <= 0x7A) { count++; }
// 입력받은 값 처음부터 끝까지 소문자인지 비교하고 비교후 count값을 올린다.
}// for end
//System.out.println(S.length() +" break를 탈출" + count + " break를 탈출");
if(count == S.length()){ break; } //카운트값과 문자열의 길이가 같다면 무한반복 탈출.
}
}// while end

for(char alphabet = 'a'; alphabet <= 'z'; alphabet++) {
bw.write(S.indexOf(alphabet) + " ");
}

//String.indexOf() 메소드는 원하는 값을 문자열 내에서 원하는 값을 찾아 인덱스 값을 반환한다. 단, 원하는 값이 없으면 -1 을 반환한다.

bw.flush();
bw.close();
}
}

문자열 반복

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class TEST07_03{
public TEST07_03() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

int n = Integer.parseInt(br.readLine());
String a = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\\$%*+-./:";
int b = 0;

for(int i=0;i<n;i++){
String xx = br.readLine();
for(int z=2;z<xx.length();z++){
for(int j=0;j<Integer.parseInt(xx.substring(0, 1));j++){
bw.write(xx.charAt(z));
}
}
bw.write("\n");
}


bw.flush();
bw.close();
}
}

단어공부 (시간초과 ㅜㅜㅜㅜㅜㅜㅜㅜ)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
class TEST07_04_t{
public TEST07_04_t() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String a = null;
String A = null;
ArrayList<String> array = new ArrayList<>();
int[] num;

while(true){
int count = 0;
a = br.readLine();
A = a.toUpperCase(); //입력받은 문자를 강제로 대문자로 형변환
num = new int[A.length()]; //입력받은 문자의 갯수만큼 정수형 배열을 생성.

if(A.length() > 1000000){
continue;
}

for (int i = 0; i < A.length(); i++) {
char chrInput = A.charAt(i); // 입력받은 텍스트에서 문자 하나하나 가져와서 체크
if (chrInput >=0x41 && chrInput <= 0x5A) {
count++; // 영문(대문자) OK!
array.add(String.valueOf(chrInput));
}
}//for end
if(count == A.length()) { break; } //count값과 A의 길이가 동일시 while 탈출
}//while end

//각각 자신의 개수를 비교하기 시작.
for (int i = 0; i < A.length()-1; i++) {
for(int j=i+1;j<A.length();j++){
if(array.get(i).equals(array.get(j))){
num[i]++;
}//if end
}//for-2 end
}//for-1 end


int temp = 0;
String chr_tmp = "";

for(int i=0;i<A.length()-1;i++){
for(int j=i+1;j<A.length();j++)
if(num[i]>num[j]){
temp = num[i];
chr_tmp = array.get(i);
num[i] = num[j];
array.set(i,array.get(j));
num[j] = temp;
array.set(j,chr_tmp);
}
}
/*
for(int i=0;i<A.length();i++){
bw.write(array.get(i)+" ");
}
bw.write("\n\n");
for(int i=0;i<A.length();i++){
bw.write(num[i]+" ");
}
bw.write("\n\n");
*/

if(num.length == 1){
bw.write(array.get(0));
}
else if(num[A.length()-1] == num[A.length()-2]){
bw.write("?\n");
}
else{
bw.write(array.get(A.length()-1));
}
bw.flush();
bw.close();
}
}

단어공부 (정답)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
class TEST07_04_A{
public TEST07_04_A() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String A = null;
int[] num = new int[26];
int max = 0;
char answer = 0;

while(true){
int count = 0;
A = br.readLine();
A = A.toUpperCase(); //입력받은 문자를 강제로 대문자로 형변환

if(A.length() > 1000000){
continue;
}

for (int i = 0; i < A.length(); i++) {
char chrInput = A.charAt(i); // 입력받은 텍스트에서 문자 하나하나 가져와서 체크
if (chrInput >=0x41 && chrInput <= 0x5A) {
count++; // 영문(대문자) OK!
}
}//for end
if(count == A.length()) { break; } //count값과 A의 길이가 동일시 while 탈출
}//while end

for(int i=0;i<A.length();i++){
num[A.charAt(i)-65]++;
if(num[A.charAt(i)-65]>max){ //최초 max는 0
answer = A.charAt(i);
max = num[A.charAt(i)-65]; //max값이 증가한다.
}
else if((num[A.charAt(i)-65]==max)){
answer = '?';
}
}
bw.write(answer);
bw.flush();
bw.close();
}
}

그룹 단어 체커

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
class TEST07_05{
public TEST07_05()throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String str = null;
int count = 0;

// a-97 z-122

while(true){
int n = Integer.parseInt(br.readLine());
count = n;
int i=0;

if(n<=100){
for(i=0;i<n;i++){
int[] num = new int[26];
str = br.readLine();

num[str.charAt(0)-97] = -1; //맨 처음 문자 값은 -1

if(str.length()>1) {
for(int j=1;j<str.length();j++){
if(num[str.charAt(j)-97] == -1 && str.charAt(j) != str.charAt(j-1)){
count--;
//초기값으로 -1을 지정하였고 그 다음에는 서로 붙어있는지 비교함. 만약 안 붙어있다면 카운트--
break;
}//if end
num[str.charAt(j) - 97] = -1; // 초기값을 -1로 초기화 시켜나감.
}//for-j end
}//if end
}//for-i end
bw.write(count+"");
}//if end
if(i == n) { break; }
}//while end

bw.flush();
bw.close();
}
}

6단계 - 1차원배열 사용하기 1번문제 임. (전 포스팅 참조)

상수

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
class TEST07_07{
public TEST07_07() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] num;

while(true){
num = br.readLine().split(" ");
int w_count = 0;

if(num[0].length() > 3 && num[0].length() < 0){
continue;
}
if(num[1].length() > 3 && num[1].length() < 0){
continue;
}

for(int i=0;i<2;i++){
w_count = 0;
for(int j=0;j<num[i].length();j++)
if(num[i].charAt(j) == '0'){
w_count++;
break;
}
}

if(w_count >= 1 ){
continue;
}

int A = Integer.parseInt(num[0]);
int B = Integer.parseInt(num[1]);

if(A != B){
break;
}
}

int a = 0;
int[] sum = new int[2];

for(int i=0;i<2;i++){
for(int j=2;j>=0;j--){
switch(j){
case 2 : a = num[i].charAt(j) - '0'; a = a*100;
break;
case 1 : a = num[i].charAt(j) - '0'; a = a*10;
break;
case 0 : a = num[i].charAt(j) - '0';
break;
}// charAt(i) - '0' -> char형을 int형으로 변환
sum[i] = sum[i] + a;
}
}

if(sum[0] > sum[1]){
bw.write(sum[0] + "");
}
else{
bw.write(sum[1] + "");
}

bw.flush();
bw.close();
}
}

다이얼

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
class TEST07_08{
public TEST07_08() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String num;
int count = 0;

while(true){
num = br.readLine();
int w_count = 0;
if(num.length()<2 && num.length()>15){
continue;
}

for(int i=0;i<num.length();i++){
if(num.charAt(i) < 64 && num.charAt(i) > 91){
w_count++;
break;
}
}//대문자로만 입력

if(w_count == 0){
break;
}
}

for(int i=0;i<num.length();i++){
switch(num.charAt(i)){
case 'A': case 'B': case 'C' : count += 3; break;
case 'D': case 'E': case 'F' : count += 4; break;
case 'G': case 'H': case 'I' : count += 5; break;
case 'J': case 'K': case 'L' : count += 6; break;
case 'M': case 'N': case 'O' : count += 7; break;
case 'P': case 'Q': case 'R' : case 'S' : count += 8; break;
case 'T': case 'U': case 'V' : count += 9; break;
case 'W': case 'X': case 'Y' : case 'Z' : count += 10; break;
}
}

bw.write(count + "");
bw.flush();
bw.close();
}
}

크로아티아 알파벳

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
class TEST07_09{
public TEST07_09() throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String c_alpha2[] = {"c=","c-","d-","lj","nj","s=","z="};
String c_alpha3 = "dz=";
String croa;


while(true){
croa = br.readLine();
int w_count = 0;
if(croa.length()<1 && croa.length()>100){
continue;
}

for(int i=0;i<croa.length();i++){
if(croa.charAt(i) < 97 || croa.charAt(i) > 122){
if (croa.charAt(i) == '-'|| croa.charAt(i) == '=' ){
continue;
}
w_count++;
break;
}
//소문자 혹은 '-' '=' 가 아닐경우 무한반복
}

if(w_count == 0){
break;
}
}

int count = croa.length();

while(true){
if(croa.indexOf(c_alpha3) > -1){
count = count - 2;
croa = croa.replaceFirst(c_alpha3," ");
}
else{ break; }
}//"dz=" 이라는 문자가 존재시 해당 문자를 빼머리고 전체값에서 -2 후 공백으로 변환.


for(int k=0;k<7;k++){
while(true){
if(croa.indexOf(c_alpha2[k]) > -1){
count = count - 1;
croa = croa.replaceFirst(c_alpha2[k]," ");

}
else{ break; }
}
}//for-k end


bw.write(count + " ");
bw.flush();
bw.close();

}
}

Main

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class TEST07 { //Main{
public static void main(String[] args) throws IOException{
// TEST07_01 test07_01 = new TEST07_01();
// TEST07_02_t test07_02_t = new TEST07_02_t();
// TEST07_02_A test07_02_A = new TEST07_02_A();
// TEST07_03 test07_03 = new TEST07_03();
// TEST07_04_t test07_04_t = new TEST07_04_t(); //시간초과
// TEST07_04_A test07_04_A = new TEST07_04_A(); //정답
// TEST07_05 test07_05 = new TEST07_05();
//6번 문제는 1차원배열사용하기 - 1번문제
// TEST07_07 test07_07 = new TEST07_07();
// TEST07_08 test07_08 = new TEST07_08();
TEST07_09 test07_09 = new TEST07_09();
}
}



Share