Hayden's Archive

[알고리즘] 백준 - 10808번 : 알파벳 개수 / 10820번 : 문자열 분석 / 11655번 : ROT13 본문

Algorithm

[알고리즘] 백준 - 10808번 : 알파벳 개수 / 10820번 : 문자열 분석 / 11655번 : ROT13

_hayden 2020. 7. 10. 08:00

알고리즘 문제 출처 : https://www.acmicpc.net/problem/10808

 

10808번: 알파벳 개수

단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다.

www.acmicpc.net

 

내가 작성한 코드

아스키코드를 활용하면 쉽게 풀 수 있는 문제

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Stack;

public class Main {
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		char[] charArr = br.readLine().toCharArray();
		int[] alphabet = new int[26];
		for(int i=0; i<charArr.length; i++) {
			alphabet[((int)charArr[i])-97]++;
		}
		for(int i=0; i<alphabet.length; i++) {
			bw.write(alphabet[i]+" ");
		}
		bw.flush();
		bw.close();
	}
}

 

 


알고리즘 문제 출처 : https://www.acmicpc.net/problem/10820

 

10820번: 문자열 분석

문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있

www.acmicpc.net

 

내가 작성한 코드

Scanner 객체의 hasNextLine() 메소드를 사용하여 입력값이 더 이상 없으면 종료하게 한다.

import java.io.IOException;
import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) throws NumberFormatException, IOException {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNextLine()) {//입력값이 있는 동안 실시
			int letterS = 0;
			int letterB = 0;
			int number = 0;
			int space = 0;
			char[] temp = sc.nextLine().toCharArray();
			for(int i=0; i<temp.length; i++) {
				if(temp[i]==' ') {//공백이라면
					space++;
				}else if((int)temp[i]>=65 && (int)temp[i]<=90){//대문자라면
					letterB++;
				}else if((int)temp[i]>=97 && (int)temp[i]<=122) {//소문자라면
					letterS++;
				}else {//숫자라면
					number++;
				}
			}
			System.out.println(letterS+" "+letterB+" "+number+" "+space);
		}
	}
}

 

 


알고리즘 문제 출처 : https://www.acmicpc.net/problem/11655

 

11655번: ROT13

첫째 줄에 알파벳 대문자, 소문자, 공백, 숫자로만 이루어진 문자열 S가 주어진다. S의 길이는 100을 넘지 않는다.

www.acmicpc.net

 

내가 작성한 코드

import java.util.Scanner;

public class Main {
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		char[] inputVal = sc.nextLine().toCharArray();
		StringBuilder sb = new StringBuilder();
		for(int i=0; i<inputVal.length; i++) {
			int num = (int)inputVal[i];
			if(65<=num && num<=90) {
				int alphabet = 65+((num-65+13)%26);
				sb.append((char)alphabet);
			}else if(97<=num && num<=122) {
				int alphabet = 97+((num-97+13)%26);
				sb.append((char)alphabet);
			}else {
				sb.append(inputVal[i]);
			}
		}
		System.out.println(sb);
	}
}