Recent Posts
Link
250x250
오늘보다 더 나은 내일의 나에게_
자바 알고리즘 문제 풀이 String Q01_문자 찾기 본문
728x90
설명
한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정 문자가 입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램을 작성하세요.
대소문자를 구분하지 않습니다. 문자열의 길이는 100을 넘지 않습니다.
입력
첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다.
문자열은 영어 알파벳으로만 구성되어 있습니다.
출력
첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다.
문자열은 영어 알파벳으로만 구성되어 있습니다.
예시 입력1
예시 출력Computercooler
c2
코드
내가 입력한 코드
package String; import java.util.Scanner; public class Q01 { public static int print1(String str1, String str2) { int result = 0; //charAt:지정한 index번째에 문자를 반환한다. for (int i = 0; i < str1.length(); i++) { String a = str1.toUpperCase().charAt(i)+""; String b = str1.toLowerCase().charAt(i)+""; if(str2.equals(a) || str2.equals(b)) { result++; } } return result; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str1 = sc.next(); String str2 = sc.next(); System.out.println(print1(str1,str2)); } }
해설 코드import java.util.*; class Main{ public int solution(String str, char t){ int answer=0; str=str.toUpperCase(); t=Character.toUpperCase(t); //System.out.println(str+" "+t); /*for(int i=0; i<str.length(); i++){ if(str.charAt(i)==t) answer++; }*/ for(char x : str.toCharArray()){ if(x==t) answer++; } return answer; } public static void main(String[] args){ Main T = new Main(); Scanner kb = new Scanner(System.in); String str=kb.next(); char c=kb.next().charAt(0); System.out.print(T.solution(str, c)); } }
풀이 및 정리
먼저 알고리즘 문제풀이는 백준 사이트에서 기초 10~20문제 풀어본 게 다였다. 하지만 문제 푸는 곳에서 프로그래머스의 문제풀이 방식에 초점을 맞춰있었다. 메서드를 만들어 main에서 호출해서 사용하는 게 너무 낯설었다. 문제는 맞췄지만 메서드도 엉망으로 작성했다.
- static메서드로 할 필요가 없고 main에서 객체를 생성해 메서드에 접근하면 된다!
- main에서 입력받을 때 next()는 문자열을 반환하므로 charAt() 메서드를 사용해 char 타입으로 변수를 생성한다.
charAt() => 지정한 index번째에 문자를 반환한다. (반환타입 char)
- 문제에서 대소문자를 구분하지 않으니 입력받은 문자열과 문자를 둘 다 대문자든 소문자든 둘 중하나로 통일시켜서 값을 구하면 훨씬 효율적이다.
=> toUpperCase(), toLowerCase() 둘 중 하나를 사용해야 하는데 타입이 char일 경우 래퍼 클래스 Character를 사용해서 메서드를 사용해준다.
- 일반 for문 대신 향상된 for문도 사용할 수 있다. 하지만 향상된 for문은 배열에서 사용하기 때문에 String 타입 str을 toCharArray()를 사용해 배열로 만들어 준다.
toCharArray() => 문자열을 한 글자씩 쪼개서 char타입의 배열로 만들어준다.
728x90
'ALGORITHM > inflearn_javaAlgorithm' 카테고리의 다른 글
자바 알고리즘 문제 풀이 String Q06_중복문자제거 (0) | 2022.01.26 |
---|---|
자바 알고리즘 문제 풀이 String Q05_특정 문자 뒤집기 (0) | 2022.01.25 |
자바 알고리즘 문제 풀이 String Q04_단어 뒤집기 (0) | 2022.01.23 |
자바 알고리즘 문제 풀이 String Q03_문장 속 단어 (0) | 2022.01.23 |
자바 알고리즘 문제 풀이 String Q02_대소문자 변환 (0) | 2022.01.23 |
Comments