2024. 2. 5. 16:31ㆍAlgorithm/inflearn
1. 문자 찾기
- 문자열(string형): 대문자, 소문자 변경하려면, 문자열 변수.toUpperCase();
- 문자(char형): Character.toUpperCase(문자형 변수);
package inflearn_java;
import java.util.Scanner;
public class Ex1_1 {
public int solution(String str, char t) {
int answer= 0;
str= str.toUpperCase(); //대문자로 변경(문자열)
t= Character.toUpperCase(t); //대문자로 변경(문자)
//System.out.println(str+" "+t);
/* method1
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) {
// TODO Auto-generated method stub
Ex1_1 t = new Ex1_1(); //static없는 인스턴스 메소드를 사용하려면 선언해야함
Scanner kb = new Scanner(System.in);
String str=kb.nextLine();
char c=kb.nextLine().charAt(0);
System.out.print(t.solution(str, c));
}
}
2. 대소문자 변환
2-1. Character클래스 메소드 사용
- Character 클래스의 isLowerCase() : 소문자이면 true, 아니면 false 반환
- isUpperCase(): 대문자이면 true, 아니면 false 반환
package inflearn_java;
import java.util.Scanner;
public class Ex1_2 {
public String solution(String str) {
String answer="";
for(char c: str.toCharArray()) {
if(Character.isLowerCase(c)) {
answer+= Character.toUpperCase(c);
}else {
answer+= Character.toLowerCase(c);
}
}
return answer;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Ex1_2 T= new Ex1_2();
Scanner sc= new Scanner(System.in);
String s= sc.nextLine();
System.out.println(T.solution(s));
}
}
2-2. 아스키넘버(ASCII) 사용해보기
- 대문자: 65~90
- 소문자: 97~122
(소문자-32 = 대문자)
package inflearn_java;
import java.util.Scanner;
public class Ex1_2 {
public String solution(String str) {
String answer="";
for(char c: str.toCharArray()) {
if(c>=97 && c<=122) {
//소문자
answer+=(char)(c-32);
}else {
//c>=65 && c<=90
//대문자
answer+=(char)(c+32);
}
}
return answer;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Ex1_2 T= new Ex1_2();
Scanner sc= new Scanner(System.in);
String s= sc.nextLine();
System.out.println(T.solution(s));
}
}
3. 문장 속 단어
<나의 풀이>
package inflearn_java;
import java.util.Scanner;
import java.util.StringTokenizer;
public class Ex1_3 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc= new Scanner(System.in);
String s= sc.nextLine();
StringTokenizer st= new StringTokenizer(s);
String answer="";
while(st.hasMoreTokens()) {
String str= st.nextToken();
if(answer.length()<str.length()) {
answer=str;
}
}
System.out.println(answer);
}
}
- StringTokenizer 활용하여 공백을 기준으로 단어를 끊는다.
- 토큰(단어)을 하나씩 가지고 와서 answer(현재 가장 긴 단어)와 비교하여 answe보다 더 길면 answer를 해당 단어로 변경
- 문장 전체를 반복해서 돌고나면 결국 가장 긴 단어만 채택
<풀이>
- 문자열.split(구분자): 구분자로 문자열을 나눠 문자열 배열로 반환
package inflearn_java;
import java.util.Scanner;
public class Ex1_3_answer {
public String solution(String str) {
String answer="";
int m=Integer.MIN_VALUE; //가장작은수로 초기화
String[] s= str.split(" "); //띄어쓰기 기준으로 문자 나눔
for(String x:s) {
int len= x.length();
if(len>m) {
m=len;
answer=x;
}
}
return answer;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Ex1_3_answer T = new Ex1_3_answer();
Scanner kb = new Scanner(System.in);
String str=kb.nextLine();
System.out.println(T.solution(str));
}
}
4. 단어 뒤집기
<나의 풀이>
- StringBuilder를 활용하면 쉽게 문자열을 뒤집을 수 있다. (reverse())
package inflearn_java;
import java.util.Scanner;
public class Ex1_4 {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc= new Scanner(System.in);
int n= Integer.parseInt(sc.nextLine());
StringBuilder answer= new StringBuilder();
for(int i=0;i<n;i++) {
StringBuilder sb= new StringBuilder();
sb.append(sc.nextLine());
sb.reverse();
answer.append(sb.toString()+"\n");
}
System.out.println(answer.toString().trim());
}
}
<풀이>
4-1. StringBuilder클래스
- 똑같이 StringBuilder 클래스 활용, 뒤로 연결해서 붙이면 더 간단하게 표현
package inflearn_java;
import java.util.ArrayList;
import java.util.Scanner;
public class Ex1_4_answer {
public ArrayList<String> solution(int n, String[] str){
ArrayList<String> answer = new ArrayList<>();
for(String x: str) {
String tmp = new StringBuilder(x).reverse().toString();
answer.add(tmp);
}
return answer;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Ex1_4_answer T = new Ex1_4_answer();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
String[] str=new String[n];
for(int i=0;i<n;i++) {
str[i]=kb.next();
}
for(String x:T.solution(n,str)) {
System.out.println(x);
}
}
}
4-2. 문자배열로 변환 후, 하나씩 교체하기
- 문자열.toCharArray() : 문자열-> 문자배열로 변환
- String.valueOf(문자배열): 문자배열 -> 문자열로 변환
package inflearn_java;
import java.util.ArrayList;
import java.util.Scanner;
public class Ex1_4_answer {
public ArrayList<String> solution(int n, String[] str){
ArrayList<String> answer = new ArrayList<>();
for(String x: str) {
char[] s=x.toCharArray(); //문자열-> 문자배열
int lt=0, rt=x.length()-1;
while(lt<rt) {
char tmp=s[lt];
s[lt]=s[rt];
s[rt]=tmp;
lt++;
rt--;
}
String tmp= String.valueOf(s); //문자배열-> 문자열
answer.add(tmp);
}
return answer;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
Ex1_4_answer T = new Ex1_4_answer();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
String[] str=new String[n];
for(int i=0;i<n;i++) {
str[i]=kb.next();
}
for(String x:T.solution(n,str)) {
System.out.println(x);
}
}
}
'Algorithm > inflearn' 카테고리의 다른 글
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 2. Array(3) (1) | 2024.02.20 |
---|---|
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 2. Array(2) (0) | 2024.02.19 |
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 2. Array(1) (1) | 2024.02.13 |
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 1. 문자열(3) (1) | 2024.02.07 |
자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비 1. 문자열(2) (1) | 2024.02.06 |