백준 11655 (bronze 1)
import java.util.Scanner;
public class problem125 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String st = in.nextLine();
for (int i = 0; i < st.length(); i++) {
char ch = st.charAt(i);
// 문자 아스키 코드값을 비교후 +13,
// 다시 아스키값을 되돌리기위해 -26을 해주었다.
if (ch >= 'A' && ch <= 'Z') {
ch += 13;
if (ch > 'Z') {
ch -= 26;
}
} else if (ch >= 'a' && ch <= 'z') {
ch += 13;
if (ch > 'z') {
ch -= 26;
}
}
System.out.print(ch);
}
}
}
/*
1. 문자찾기
설명
한개의 문자열을 입력받고, 특정 문자를 입력받아 해당 특정문자가
입력받은 문자열에 몇 개 존재하는지 알아내는 프로그램을 작성하세요.
대소문자를 구분하지 않습니다. 문자열의 길이는 100을 넘지 않습니다.
입력
첫 줄에 문자열이 주어지고, 두 번째 줄에 문자가 주어진다.
문자열은 영어 알파벳으로만 구성되어 있습니다.
출력
첫 줄에 해당 문자의 갯수를 출력한다.
*/
import java.util.Scanner;
public class problem121 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String st = in.next().toUpperCase();
String mt = in.next().toUpperCase();
char[] chars = mt.toCharArray();
int count = 0;
for(int i = 0; i < st.length(); i++){
char ch = st.charAt(i);
for(int j = 0; j < chars.length; j++) {
if (ch == chars[j]) {
count++;
}
}
}
System.out.print(count);
}
}
/*
문제 설명
5*5 격자판에 아래와 같이 숫자가 적혀있습니다.
N*N의 격자판이 주어지면 각 행의 합, 각 열의 합,
두 대각선의 합 중 가 장 큰 합을 출력합니다.
▣ 입력설명
첫 줄에 자연수 N이 주어진다.(1<=N<=50)
두 번째 줄부터 N줄에 걸쳐 각 줄에 N개의 자연수가 주어진다.
각 자연수는 100을 넘지 않는다.
▣ 출력설명
최대합을 출력합니다.
▣ 입력예제 1
▣ 출력예제 1
155
*/
import java.util.Scanner;
public class problem122 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int size = in.nextInt();
int [][] arr = new int[size][size];
for(int i = 0; i <size; i++){
for(int j = 0; j < size; j++){
arr[i][j] = in.nextInt();
}
}
int answer = Integer.MIN_VALUE;
int sum1;
int sum2;
for(int i = 0; i < size; i++){
sum1 = sum2 = 0;
for(int j = 0; j < size; j++){
sum1 += arr[i][j]; // 행 고정, 열 이동
sum2 += arr[j][i]; // 행 이동, 열 고정
}
answer = Math.max(answer,sum1);
answer = Math.max(answer,sum2);
}
int cross = 0;
int reverseCross =0;
for (int i = 0; i < size; i++) {
cross += arr[i][i]; // 대각선을 구하는 로직
reverseCross += arr[i][size-i-1];
}
answer = Math.max(answer, cross);
answer = Math.max(answer, reverseCross);
System.out.print(answer);
}
}
/*
문제 설명 (투 포인터로 해결)
오름차순으로 정렬이 된 두 배열이 주어지면 두 배열을
오름차순으로 합쳐 출력하는 프로그램을 작성하세요.
입력
첫 번째 줄에 첫 번째 배열의 크기 N(1<=N<=100)이 주어집니다.
두 번째 줄에 N개의 배열 원소가 오름차순으로 주어집니다.
세 번째 줄에 두 번째 배열의 크기 M(1<=M<=100)이 주어집니다.
네 번째 줄에 M개의 배열 원소가 오름차순으로 주어집니다.
각 리스트의 원소는 int형 변수의 크기를 넘지 않습니다.
출력
오름차순으로 정렬된 배열을 출력합니다.
예시 입력
3
1 3 5
5
2 3 6 7 9
예시 출력
1 2 3 3 5 6 7 9
*/
import java.util.ArrayList;
import java.util.Scanner;
public class problem123 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
ArrayList<Integer> answer = new ArrayList<>();
int aSize = in.nextInt();
int [] arr = new int[aSize];
for(int i = 0; i < aSize; i++){
arr[i] = in.nextInt();
}
int bSize = in.nextInt();
int [] brr = new int[bSize];
for(int i = 0; i < bSize; i++){
brr[i] = in.nextInt();
}
int p1= 0, p2 = 0;
while(p1 < aSize && p2 < bSize ){
// p1이 가르키는 값을 add하고 그 다음 p1++이 된다.
if(arr[p1] < brr[p2]) {
answer.add(arr[p1++]);
}
// brr배열이 더작은값인 경우
else{
answer.add(brr[p2++]);
}
}
// 위의 조건중 p2 < bSize가 만족하지 못하는 조건일경우
// 아직까지 이 조건은 유효하다.
while(p1 < aSize){
answer.add(arr[p1++]);
}
// 위 로직과 마찬가지.
while(p2 < bSize){
answer.add(brr[p2++]);
}
for(int result : answer){
System.out.print(result + " ");
}
}
}
/*
학급 회장
문제 설명
학급 회장을 뽑는데 후보로 기호 A, B, C, D, E 후보가 등록을 했습니다.
투표용지에는 반 학생들이 자기가 선택한 후보의 기호(알파벳)가
쓰여져 있으며 선생님은 그 기호를 발표하고 있습니다.
선생님의 발표가 끝난 후 어떤 기호의 후보가
학급 회장이 되었는지 출력하는 프로그램을 작성하세요.
반드시 한 명의 학급회장이 선출되도록 투표결과가 나왔다고 가정합니다.
출력
▣ 입력설명
첫 줄에는 반 학생수 N(5<=N<=50)이 주어집니다.
두 번째 줄에 N개의 투표용지에 쓰여져 있던 각 후보의 기호가
선생님이 발표한 순서대로 문자열로 입력됩니다.
▣ 출력설명
학급 회장으로 선택된 기호를 출력합니다.
▣ 입력예제 1
15
BACBACCACCBDEDE
▣ 출력예제 1
C
*/
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class problem124 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int size = in.nextInt();
Map<Character, Integer> map = new HashMap<>();
String m = in.next();
for (int i = 0; i < size; i++) {
char ch = m.charAt(i);
// map의 값을 담고, key값이 존재하지 않으면 0으로 반환
map.put(ch, map.getOrDefault(ch, 0) + 1);
}
int max = Integer.MIN_VALUE;
char solution = ' ';
// key값을 찾아 for each문으로 돌린후, value값을 찾아 비교를한다.
for (char c : map.keySet()) {
int result = map.get(c);
if (result > max) {
max = result;
solution = c;
}
}
System.out.print(solution);
}
}