728x90
String(문자열) 섹션 - (1)
1-1. 문자 찾기
한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램을 작성하세요.
// 섹션 1-1 문자 찾기
//한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램을 작성하세요.
//대소문자를 구분하지 않습니다.문자열의 길이는 100을 넘지 않습니다.
//입력 : 첫 줄 문자열 , 두 번째줄 문자 입력
//출력 : 첫 줄의 문자열 속에서 두 번째 '문자' 포함된 [문자 개수]를 출력한다.
public class Main {
//솔루션 함수 (문자열, 문자) => 포함 개수 리턴
public int solution(String str, char t) {
int answer = 0;
//대소문자 구분 X => 하나의 문자로 통일 시켜놓고
str = str.toUpperCase();
t = Character.toUpperCase(t);
//이제 실질적 카운팅
for(int i = 0 ; i <str.length(); i++) {
if(str.charAt(i) == t) {
answer++;
}
}
return answer;
}
//실행 메인
public static void main(String[] args) {
// TODO Auto-generated method stub
Main T = new Main();
Scanner kb = new Scanner(System.in);
//1) 문자열 입력
String str = kb.next();
//2) 문자 입력
char c = kb.next().charAt(0); //한 문자 가져오기
//솔루션 리턴값 출력
System.out.println(T.solution(str, c));
}
}
1-2. 대소문자 변환
대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로 변환하여 출력하는 프로그램을 작성하세요.
// 1-2. 대소문자 변환
/*
* 설명 ; 대소문자 혼합 존재 문자열 입력 받고
* 대 -> 소, 소 -> 대 변환시켜 출력시키는 프로그램 작성하라
*
* 입력 : 첫 줄 문자열 입력, (길이 100이하, 영어로만 구성)
* 출력 : 첫 줄에 변환된 문자열 출력
*
* */
public class Main2 {
//솔루션 함수
public String solution(String str) {
String answer = "";
// toCharArray : String -> char 배열로 만듬
for(char x : str.toCharArray()) {
//각각의 요소 대소문자 구분시켜서 바꿔주기
//1) 소문자이면 => 대문자로 변경
if(Character.isLowerCase(x)) answer += Character.toUpperCase(x);
//2) 대문자이면 => 소문자로 변경
else answer += Character.toLowerCase(x);
}
return answer;
}
//실행 메인 (입력 애들 세팅, 출력)
public static void main(String[] args) {
// TODO Auto-generated method stub
Main2 T = new Main2();
//입력 규격 맞추기
Scanner kb = new Scanner(System.in);
String str = kb.next();
//곧장 출력
System.out.println(T.solution(str));
}
}
1-3. 문장 속 단어 - (1) 풀이 : split () 활용
한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요.
문장속의 각 단어는 공백으로 구분됩니다.
/* 1-3. 문장 속 단어
*
* 설명 : 한 문장 주어지면, 해당 무낭 속 가장 긴 단어 출력 프로그램 작성
*
* 입력 : 첫 줄에 문장 1개 입력 (100 이하. 알파벳구성)
*
* 출력 : 첫 줄에 가장 긴 단어 출력 (긴 단어 여러 개인 경우, 더 앞쪽에 위치한 단어 우선)
* */
public class Main3 {
//솔루션 함수
public String solution(String str) {
String answer = "";
//카운팅 Max 값에 우선 가장 작은 값 초기화
int M = Integer.MIN_VALUE;
// 문장 속 공백 기준 단어 자르기 추출 : split()
String[] s = str.split(" ");
for(String x : s) {
//각 [] 속 단어 길이 측정
int len = x.length();
// 카운팅 M보다 더 큰 길이 발견 시
if(len > M) {
M = len; // 더 큰 길이 M으로 갱신
answer = x; //정답도 갱신
}
}
return answer;
}
//실행 메인 (입력 애들 세팅, 출력)
public static void main(String[] args) {
// TODO Auto-generated method stub
Main3 T = new Main3();
//입력 규격 맞추기
Scanner kb = new Scanner(System.in);
// 입력 : 공백 포함한 라인 전체를 입력받아야 하므로
String str = kb.nextLine();
// 곧장 출력
System.out.println(T.solution(str));
}
}
1-4. 단어 뒤집기 -(2) : 직접 reverse() 구현
N개의 단어가 주어지면 각 단어를 뒤집어 출력하는 프로그램을 작성하세요.
/*
* 1-4. 단어 뒤집기
* 설명 : N개 단어 주어지면 각 단어 뒤집어 출력 프로그램
*
* 입력 : 첫 줄에 자연수 N개(<=20) 주어짐
* 둘째 줄부터 N개의 단어를 각 줄에 하나씩 입력. (단 영어로만 구성)
*
* 출력 : N개 단어 입력한 순서대로 한 줄에 하나씩 뒤집어서 출력
* */
public class Main4 {
//솔루션 함수
public ArrayList<String> solution(int n, String[] str) {
ArrayList<String> answer = new ArrayList<>();
for(String x : str) {
//reverse 를 제공하는 StringBuilder 객체
String tmp = new StringBuilder(x).reverse().toString();
answer.add(tmp);
}
return answer;
}
//실행 메인
public static void main(String[] args) {
// TODO Auto-generated method stub
Main4 T = new Main4();
//입력 규격 맞추기
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
// 입력 : 사용자가 입력한 N개만큼 문자열 입력받기
String[] str = new String[n]; //n개 문자열 배열 입력
for(int i = 0; i<n; i++) {
str[i] = kb.next();
}
// 출력
for(String x : T.solution(n, str)) {
System.out.println(x);//각각 뒤집은 애들 for 돌면서 출력
}
}
}
1-4. 단어 뒤집기 -(2) : 직접 reverse() 구현
* 1-4. 단어 뒤집기
* 설명 : N개 단어 주어지면 각 단어 뒤집어 출력 프로그램
*
* 입력 : 첫 줄에 자연수 N개(<=20) 주어짐
* 둘째 줄부터 N개의 단어를 각 줄에 하나씩 입력. (단 영어로만 구성)
*
* 출력 : N개 단어 입력한 순서대로 한 줄에 하나씩 뒤집어서 출력
* */
public class Main4 {
//솔루션 함수
public ArrayList<String> solution(int n, String[] str) {
ArrayList<String> answer = new ArrayList<>();
//String -> char 배열 변경 후 -> 대칭 요소 간 자리 바꾸기 -> 가운데는 그대로니까
// lt <-> rt 찍어서 서로 교환
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 --;
}
// valueOf() 내용물을 string화 하는 메소드
String tmp = String.valueOf(s);
answer.add(tmp);
}
return answer;
}
//실행 메인
public static void main(String[] args) {
// TODO Auto-generated method stub
Main4 T = new Main4();
//입력 규격 맞추기
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
// 입력 : 사용자가 입력한 N개만큼 문자열 입력받기
String[] str = new String[n]; //n개 문자열 배열 입력
for(int i = 0; i<n; i++) {
str[i] = kb.next();
}
// 출력
for(String x : T.solution(n, str)) {
System.out.println(x);//각각 뒤집은 애들 for 돌면서 출력
}
}
}
728x90
'알고리즘 이론 [개념] > [개념] 코테 알고리즘 공부 - 시즌 1' 카테고리의 다른 글
배열(Array) 섹션 - (3) (0) | 2023.03.01 |
---|---|
배열(Array) 섹션 - (2) (0) | 2023.02.28 |
배열(Array) 섹션 - (1) (0) | 2023.02.27 |
String(문자열) 섹션 - (3) (0) | 2023.02.23 |
String(문자열) 섹션 - (2) (0) | 2023.02.22 |