Home 01.문자찾기, 대소문자 변환, 문장속 단어
Post
Cancel

01.문자찾기, 대소문자 변환, 문장속 단어

1-1. 문자 찾기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
설명 :
한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램을 작성하세요.
대소문자를 구분하지 않습니다.문자열의 길이는 100을 넘지 않습니다.

입력 :
첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다.

출력 :
첫 줄에 해당 문자의 개수를 출력한다.

입력 예시 :
Computercooler
c

출력 예시 :
2

나의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.*;
public class Main {
  public static int solution(String input1, char input2) {
        char[] c = input1.toLowerCase().toCharArray();
        int cnt = 0;
        for(int i=0; i < c.length; i++) {
            if(input2 == c[i]) {
                cnt++;
            }
        }
        return cnt;
    }

  public static void main(String[] args){
    Scanner in=new Scanner(System.in);
    String input1 = in.nextLine();
    String input2 = in.nextLine().toLowerCase();
    char c = input2.charAt(0);

    System.out.println(solution(input1,c));
  }
}

정답 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import java.util.*;
public class Main {
  public static int solution(String input1, char input2) {
        int answer = 0;
        input1 = input1.toUpperCase();
        input2 = Character.toUpperCase(input2);

        for(chae x : input1.toCharArray()) {
          if(x == input2) answer++;
        }
        return answer;
    }

  public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    String input1 = in.next();
    char input2 = in.next().charAt(0);

    System.out.println(solution(input1,input2));
  }

1-2. 대소문자 변환

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
설명 :
대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로 변환하여 출력하는 프로그램을 작성하세요.

입력 :
첫 줄에 문자열이 입력된다. 문자열의 길이는 100을 넘지 않습니다.
문자열은 영어 알파벳으로만 구성되어 있습니다.

출력 :
첫 줄에 대문자는 소문자로, 소문자는 대문자로 변환된 문자열을 출력합니다.

입력 예시 :
StuDY

출력 예시 :
sTUdy

나의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.util.*;
public class Main {
   public static String solution(String input) {
        String output = "";

        for(int i = 0; i < input.length(); i++) {
          	//대문자에 +32 하면 소문자 변환
            if((input.charAt(i) >= 65) && (input.charAt(i) <= 90)) {
                output += (char)(input.charAt(i) + 32);
            //소문자에 -32 하면 대문자 변환
            }else{
                output += (char)(input.charAt(i) - 32);
            }
        }
        return output;
    }

  public static void main(String[] args){
    Scanner in=new Scanner(System.in);
    String input1 = in.nextLine();
    System.out.println(solution(input1));
  }
}

정답 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.util.*;
public class Main {
   public static String solution(String input) {
        String output = "";
        for(char x : input.toCharArray()) {
          //Character.isLowerCase() : 소문자인지 확인
          if(Character.isLowerCase(x)) output += Character.toUpperCase(x);
          else output += Character.toLowerCase(x);
        }
        return output;
    }

  public static void main(String[] args){
    Scanner in=new Scanner(System.in);
    String input1 = in.next();
    System.out.println(solution(input1));
  }
}

1-3. 문장 속 단어

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
설명 :
한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요.
문장속의 각 단어는 공백으로 구분됩니다.

입력 :
첫 줄에 길이가 100을 넘지 않는 한 개의 문장이 주어집니다. 문장은 영어 알파벳으로만 구성되어 있습니다.

출력 :
첫 줄에 가장 긴 단어를 출력한다. 가장 길이가 긴 단어가 여러개일 경우 문장속에서 가장 앞쪽에 위치한
단어를 답으로 합니다.

입력 예시 :
it is time to study

출력 예시 :
study

나의 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
import java.util.*;
public class Main {
   public static String solution(String input) {
        String[] tmpArr = input.split(" ");
        String result = "";
        for(int i = 0; i < tmpArr.length; i++) {
            if(result.length() < tmpArr[i].length()) {
                result = tmpArr[i];
            }
        }
        return result;
    }

  public static void main(String[] args){
    Scanner in=new Scanner(System.in);
    String input1 = in.nextLine();
    System.out.println(solution(input1));
  }
}

정답 풀이

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
//1. split 사용
import java.util.*;
public class Main {
   public static String solution(String input) {
        String answer = "";
        int m = Integer.MIN_VALUE;  //작은 값으로 초기화
        String[] s = input.split(" ");

        for(String x : input) {
          int len = x.length();
          if(len > m) {
            m = len;
            answer = x;
          }
        }
        return answer;
    }

  public static void main(String[] args){
    Scanner in=new Scanner(System.in);
    String input1 = in.nextLine();
    System.out.println(solution(input1));
  }
}
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
//2. indexOf, substring 사용
import java.util.*;
public class Main {
   public static String solution(String input) {
        String answer = "";
        int m = Integer.MIN_VALUE, pos;

        while((pos = input.indexOf(' ') != -1) {
          String tmp = input.substring(0, pos); //문장을 공백에서 잘라서 각각 단어를 tmp에 담는다.
          int len = input.length();
          if(len > m) {
            m = len;
            answer = tmp;
          }
          input = input.substring(pos+1); //한 단어의 비교를 끝냈으면 다음 단어부터 시작하도록 문장을 자른다.
        }
        //문장의 마지막 단어는 공백으로 자를 수 없으므로 while문 밖에서 처리한다.
        if(input.length() > m) answer = input;

        return answer;
    }

  public static void main(String[] args){
    Scanner in=new Scanner(System.in);
    String input1 = in.nextLine();
    System.out.println(solution(input1));
  }
}
This post is licensed under CC BY 4.0 by the author.