Hayden's Archive
[알고리즘] 백준 - 10808번 : 알파벳 개수 / 10820번 : 문자열 분석 / 11655번 : ROT13 본문
알고리즘 문제 출처 : 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);
}
}