1일차 문자열 알고리즘

쿠우·2022년 7월 14일
0

설명
한 개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가 입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램을 작성하세요.
대소문자를 구분하지 않습니다.문자열의 길이는 100을 넘지 않습니다.

입력
첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다.
문자열은 영어 알파벳으로만 구성되어 있습니다.

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


public class Main {
	public static void main(String[] args) {
		
		Scanner sc=new Scanner(System.in); 
		
		String str  = sc.nextLine();
		char ch = sc.next().charAt(0);
		
		System.out.println(find(ch,str));
		

	}// main

	private static int find(char ch, String str) {
		int count = 0;
		char[] str1 = str.toUpperCase().toCharArray();
		for(char element: str1) {
			if(element == Character.toUpperCase(ch)) {
				count++;
			}//if
		}//for		
		return count;
	}// find
}//end class

  1. 입력받는다
  2. 입력 받은 값들을 다 대문자로 변환한다.
  3. 비교하여 카운트한다.
  4. 값을 반환하고 출력한다

선배님들의 정답 방법과 차이점 그리고 느낀점 : 비슷했다. 없음.


설명
대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자는 소문자로 소문자는 대문자로 변환하여 출력하는 프로그램을 작성하세요.

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

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


import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		
		String str = input();
		
		while(str.length() > 100 ) {
			str = input();
			continue;
		}// while
		
		System.out.println(change(str));
		

	}// main

	private static String input(){
		Scanner sc=new Scanner(System.in); 
		String str  = sc.nextLine();
		return str;
	}// input
	
	
	private static String change(String str) {
		char[] ch = str.toCharArray();
		str ="";
		for(char ch1 : ch) {
			if(ch1 <= 90) {
				str+= Character.toLowerCase(ch1);
			} else {
				str+= Character.toUpperCase(ch1);
			}// if - else
		}// for
		return str;
	}// find
	
}//end class


1.입력 받는다
2.100자이상은 걸러낸다.
3.대문자와 소문자를요소 하나씩 불러 아스키코드로 비교해 역전시킨다.

선배님들의 정답 방법과 차이점 그리고 느낀점 : isLowerCase() 메소드를 이용하여 더 짧고 간결하게 표현했다. 메소드 더 익혀야 한다고 깨달음.


설명
한 개의 문장이 주어지면 그 문장 속에서 가장 긴 단어를 출력하는 프로그램을 작성하세요.
문장속의 각 단어는 공백으로 구분됩니다.

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

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

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		
		String str = input();
		
		while(str.length() > 100 ) {
			str = input();
			continue;
		}// while
		
		System.out.println(find(str));
		

	}// main

	private static String input(){
		Scanner sc=new Scanner(System.in); 
		String str  = sc.nextLine();
		return str;
	}// input
	
	
	private static String find(String str) {
		 String [] arr = str.split(" ");
		 str = "";
		 for(String element : arr) {
			 if(str.length()<element.length()) {
				 str = element;
			 }  else {;;} 
		 }// for
		return str;
	}// find
	
}//end class
  1. 입력을 받고 길이가 100을 넘는지 거른다.
  2. 입력받은 문장을 단어별로 정리 string 배열에 담는다.
    -공백 문자열을 기준으로 나눈다. split()사용
  3. 하나씩 꺼내서 length를 비교한다.
  4. 가장 큰 length의 단어를 출력

선배님들의 정답 방법과 차이점 그리고 느낀점 : indexOf() 등 을 이용한 방법 등을 보고서 다양한 방법으로 사용가능하다고 느꼈음. 내가 한 것도 괜찮다 느낌

profile
일단 흐자

0개의 댓글