* 기본 알아둘 것 정리 링크
문제
출처 : 백준 온라인 저지 3047
세 수 A, B, C가 주어진다. A는 B보다 작고, B는 C보다 작다.
세 수 A, B, C가 주어졌을 때, 입력에서 주어진 순서대로 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 세 숫자 A, B, C가 주어진다. 하지만, 순서는 A, B, C가 아닐 수도 있다. 세 숫자는 100보다 작거나 같은 자연수이다. 둘째 줄에는 A, B, C로 이루어진 세 글자가 주어지며, 이 순서대로 출력하면 된다.
출력
import java .util .*;
public class Main {
public static void main (String [] args ) {
int [] nums = new int [3 ];
Scanner s = new Scanner (System .in );
for (int i =0 ; i <3 ; i ++) {
nums [i ] = s .nextInt ();
}
int tmp = 0 ;
for (int i =0 ; i <nums .length ; i ++) {
for (int j =0 ; j <nums .length ; j ++) {
if (nums [i ] < nums [j ]) {
tmp = nums [i ];
nums [i ] = nums [j ];
nums [j ] = tmp ;
}
}
}
char [] chs = new char [3 ];
chs = s .next ().toCharArray ();
for (int i =0 ; i <chs .length ; i ++) {
System .out .print (nums [chs [i ] - 'A' ] + " " );
}
}
}
문제
출처 : 백준 온라인 저지 10808
알파벳 소문자로만 이루어진 단어 S가 주어진다. 이 때, 각 알파벳이 단어에 몇 개가 포함되어 있는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 단어 S가 주어진다. 단어의 길이는 100을 넘지 않으며, 알파벳 소문자로만 이루어져 있다.
출력
단어에 포함되어 있는 a의 개수, b의 개수, …, z의 개수를 공백으로 구분해서 출력한다.
1 1 0 0 1 0 0 0 0 1 1 0 0 1 2 0 0 0 0 0 0 0 0 0 0 0
import java .util .*;
public class Main {
public static void main (String [] args ) {
Scanner s = new Scanner (System .in );
int [] counts = new int ['z' - 'a' + 1 ];
char [] inputs = s .next ().toCharArray ();
for (int i =0 ; i <inputs .length ; i ++) {
counts [inputs [i ] - 'a' ]++;
}
for (int i =0 ; i <counts .length ; i ++) {
System .out .print (counts [i ] + " " );
}
}
}
문제
출처 : 백준 온라인 저지 2908
상수는 수를 다른사람과 다르게 거꾸로 읽는다. 예를 들어, 734과 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.
두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 칠판에 적은 두 수 A와 B가 주어진다. 두 수는 같지 않으며, 0이 포함되어 있지 않다.
출력
import java .util .*;
public class Main {
public static void main (String [] args ) {
Scanner s = new Scanner (System .in );
int a = s .nextInt ();
int b = s .nextInt ();
int reverseA = reverse (a );
int reverseB = reverse (b );
System .out .print (reverseA > reverseB ? reverseA : reverseB );
}
public static int reverse (int n ) {
int reverse = 0 ;
while (n != 0 ) {
reverse *= 10 ;
reverse += (n % 10 );
n = n / 10 ;
}
return reverse ;
}
}
4. 문자열 처리 (카이사르 암호화 된 단어 복호화)
문제
출처 : 백준 온라인 저지 5598
26개의 대문자 알파벳으로 이루어진 단어를 카이사르 암호 형식으로 3문자를 옮겨 겹치지 않게 나열하여 얻은 카이사르 단어가 있습니다. 이 카이사르 단어를 원래 단어로 돌려놓는 프로그램을 작성하세요.
예를 들어서, 이 방법대로 단어 'JOI'를 카이사르 단어 형식으로 변환한다면 'MRL'을 얻을 수 있고, 앞의 예와 같은 방법으로 얻은 카이사르 단어 'FURDWLD'를 원래 단어로 고치면 'CROATIA'가 됩니다.
입력
입력은 한 줄로 이루어져 있으며, 그 한 줄엔 대문자 알파벳으로 구성된 단어가 1개 있습니다. 입력받는 단어는 최대 1000자 이하입니다.
출력
출력은 입력받은 카이사르 단어를 원래 단어로 고친 걸 출력하시면 됩니다.
import java .util .*;
public class Main {
public static void main (String [] args ) {
Scanner s = new Scanner (System .in );
char [] inputs = s .next ().toCharArray ();
for (int i =0 ; i <inputs .length ; i ++) {
char translateChar = (char ) (inputs [i ] - 3 );
if (translateChar > 'Z' ) {
System .out .print ((char ) (translateChar - 26 ));
}
if (translateChar < 'A' ) {
System .out .print ((char ) (translateChar + 26 ));
}
else {
System .out .print (translateChar );
}
}
}
}