알고리즘

10월 11일 2문제 - Java

1. 문자 찾기

한개의 문자열을 입력받고 특정 문자를 입력받아 입력받은 문자열에 특정문자가 몇개 존재 하는 지 알아낸다.

* 대소문자를 구분하지 않는다.

 


1. 특정문자 1개를 받아 변수에 넣기 위해 charAt(0)을 사용했다.

sc.next().charAt(0)

2. Character.toUpperCase() 를 통해 특정문자 1개를 대문자로 변경했다.

3. 향상된 for문 사용을 위해 String 문자열을 toCharArray() 을 사용하여 char 배열로 변경했다.

 

import java.util.Scanner;

public class Main {

  public int solution(String str, char ch) {
    int answer = 0;
    str = str.toUpperCase();
    ch = Character.toUpperCase(ch);

//    for (int i = 0; i < str.length(); i++) {
//      if (str.charAt(i) == ch) {
//        answer++;
//      }
//    }
    
    for(char x : str.toCharArray()){
      if(x == ch){
        answer++;
      }
    }
    return answer;
  }

  public static void main(String[] args) {
    Main test1_01 = new Main();
    Scanner scanner = new Scanner(System.in);
    String str = scanner.next();
    char ch = scanner.next().charAt(0);
    System.out.println(test1_01.solution(str, ch));
  }
}

 

2. 대소문자 변환

대문자, 소문자가 같이 존재하는 문자열에서 대문자를 소문자로 소문자를 대문자로 변경하여 문자열을 return 한다.


1. 해당 문자가 소문자인지 대문자인지 확인하기 위해 Character.isUppercase() 를 사용했다.

 

2. 아스키코드로도 구현 가능하다.

 

대문자는 65~90, 소문자는 97~122 이고 대문자와 소문자의 차이는 32 이기 때문에

if(x>=64 && x<=90) 일때는 대문자 이고

if(x>=97 && x<=122) 일때 소문자 이다.

answer = (char) (x-32);

(char) 로 형변환 해주면 아스키코드 숫자 대로 문자가 return 된다.

-32를 해준 이유는 소문자일 경우 대문자로 변경되고

+32를 해주면 대문자가 소문자로 변경된다

 

import java.util.Scanner;

public class Main {

  public String solution(String sentence){
    String result = "";
    for (char x : sentence.toCharArray()) {
      if (Character.isUpperCase(x)) {
        x = Character.toLowerCase(x);
      } else {
        x = Character.toUpperCase(x);
      }
      result =  result + x;
    }
    return result;
  }

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

'알고리즘' 카테고리의 다른 글

10월 13일 2문제 - Java  (0) 2021.10.13
10월 12일 2문제 - Java  (0) 2021.10.12
[프로그래머스] 하샤드 수  (0) 2021.05.11
[프로그래머스] 핸드폰 번호 가리기  (0) 2021.05.10
[Java] 백준 5585 : 거스름돈  (1) 2020.05.20