Hayden's Archive
[알고리즘] 백준 2675번 : 문자열 반복 / 1157번 : 단어 공부 / 2908번 : 상수 / 5622번 : 다이얼 본문
Algorithm
[알고리즘] 백준 2675번 : 문자열 반복 / 1157번 : 단어 공부 / 2908번 : 상수 / 5622번 : 다이얼
_hayden 2020. 6. 11. 15:36알고리즘 문제 출처 : https://www.acmicpc.net/problem/2675
내가 작성한 코드
거의 처음 써보는 3차원 배열. 테스트 케이스의 숫자를 받고 또 그 안으로 들어가서 각각의 횟수와 문자열을 받고 그 횟수에 맞게 문자열을 순차적으로 반복하다 보니 3차원 배열까지 가게 되었다. 문자열에서 순차적으로 인덱스에 접근하기 위해 String 클래스의 charAt() 메소드를 활용하였다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int t = sc.nextInt();
for(int i=0; i<t; i++) {
int r = sc.nextInt();
String s = sc.next();
for(int j=0; j<s.length(); j++) {
for(int k=0; k<r; k++) {
System.out.print(s.charAt(j));
}
}
System.out.println();
}
}
}
알고리즘 문제 출처 : https://www.acmicpc.net/problem/1157
내가 작성한 코드
문자열을 대문자로 바꿔서 char형 배열로 변환하고 알파벳 대문자의 아스키코드 값이 65~90인 것을 감안하여 65를 빼서 해당되는 값을 check 배열에 1씩 증가시킨다. 그 뒤 반복문을 통해 최대값이 있는 위치를 찾고, 반복문을 한번 더 돌려서 최대값이 여러 개일 경우에는 ?를 출력할 수 있도록 ?를 print에 저장한다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//대문자 65~90
int[] check = new int[26];
int max = 0;
int index = 0;
Scanner sc = new Scanner(System.in);
String str = sc.next();
char[] temp = str.toUpperCase().toCharArray();
for(int i=0; i<temp.length; i++) {
check[((int)temp[i])-65] += 1;
}
for(int i=0; i<26; i++) {
if(max < check[i]) {
max = check[i];
index = i;
}
}
char print = (char)(index+65);
for(int i=0; i<26; i++) {
if(check[i] == max) {
if(index!=i) print = '?';
}
}
System.out.println(print);
}
}
알고리즘 문제 출처 : https://www.acmicpc.net/problem/2908
내가 작성한 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String strNum1 = sc.next();
String strNum2 = sc.next();
StringBuilder sb1 = new StringBuilder(strNum1);
StringBuilder sb2 = new StringBuilder(strNum2);
int num1 = Integer.parseInt(sb1.reverse().toString());
int num2 = Integer.parseInt(sb2.reverse().toString());
System.out.println(Math.max(num1, num2));
}
}
알고리즘 문제 출처 : https://www.acmicpc.net/problem/5622
내가 작성한 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.next();
int time = 0;
String[] alphabet = {"","","ABC","DEF","GHI","JKL","MNO","PQRS","TUV","WXYZ"};
for(int i=0; i<str.length(); i++) {
for(int j=0; j<alphabet.length; j++) {
if(alphabet[j].contains(str.substring(i, i+1))) {
time += j+1;
}
}
}
System.out.println(time);
}
}