CodingTest(64)
-
백준(Backjoon) 1259, 팰린드롬수
문제풀이 StringBuiler 클래스의 reverse() 메서드를 활용하여 반전시킨 다음에 기존 입력받은 문자열과 비교하여 팰린드롬수인지 검사한다. 소스코드 public class Main { public static String solution(String str) { StringBuilder sb = new StringBuilder(str); String rever_str = sb.reverse().toString(); return str.equals(rever_str) ? "yes" : "no"; } public static void main(String args[]) throws IOException { BufferedReader br = new BufferedReader(new InputStr..
2021.07.08 -
백준(Backjoon) 10820, 문자열 분석
문제풀이 하나의 문자열을 입력받고 Character 클래스의 isLowerCase(), isUpperCase(), isDigit(), isSpaceChar() 메서드를 활용하여 각각의 문자 종류에 따라서 카운트를 수행한다. 주의할 점은 입력부문에서 입력 개수가 주어지지 않아서 while문의 조건문을 null이 아닐때까지 입력받는 것으로 설정한다. 소스코드 public class Main { public static void solution(String str) { int[] arr; StringBuilder answer = new StringBuilder(); arr = new int[4]; answer = new StringBuilder(); for(int i=0;i
2021.07.07 -
백준(Backjoon) 10799, 쇠막대기
문제풀이 제가 생각한 위 문제의 핵심은 레이저가 발사 시 발사된 가운데를 기점으로 쇠막대기의 왼쪽의 개수를 세는 것입니다. 그리고 오른쪽의 개수는 파이프가 끝날때마다 1개씩 추가해주는 것이라고 생각합니다. 위의 설명을 스택에 적용한다면 다음과 같습니다. "(" 문자열이 입력될때마다 스택에 "(" 문자열 push ")" 문자열이 입력될 때 pop 수행, 그리고 ")" 문자열이 레이저인지 파이프의 종료인지 검사 입력된 ")" 문자열의 이전 문자열이 "(" 인 경우 : 레이저 레이저 인경우 스택의 사이즈 만큼 결과 변수에 누적 입력된 ")" 문자열의 이전 문자열이 ")" 인 경우 : 파이프의 종료 파이프의 종료인 경우 결과 변수에 1만큼 누적 소스코드 import java.io.BufferedReader; i..
2021.07.06 -
백준(Backjoon) 1026, 보물
문제풀이 A배열과 B배열의 각각의 원소에 대한 곱하기의 합이 최소값이 되기 위해서는 A배열의 제일 작은 원소값들과 B 배열의 제일 큰 원소값들이 곱하기를 수행하여야 한다. 따라서 A 배열은 오름차순으로 정렬하고, B 배열은 내림차순으로 정렬하여야 한다. 소스코드 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; import java.util.Collections; public class Main { public static int solution(Integer[] A, Integer[] B, int n) { Arrays.sort(A);// 오름차..
2021.07.06 -
백준(Backjoon) 11655, ROT13
문제풀이 각각의 문자들을 10진수로 변환한 다음 소문자, 대문자에만 13을 더한다. 단, 13을 더했을때 알파벳 십진수의 범위에서 벗어나는 경우 순회하여 증가시킨다. 예를 들어 소문자 알파벳 'o' 같은 경우 십진수로 111이다. 여기서 13을 더하면 124가 된다. 하지만 124는 97~122의 범위에서 벗어나므로 2 초과한다. 따라서 초과한 만큼 다시 97에서 더하여 98을 만들도록 한다. 공식은 아래와 같다. 더보기 만약 문자가 소문자이고 문자의 십진수+13이 122보다 초과할 때 최종값 = (문자의 십진수+13)-123+97 만약 문자가 대문자이고 문자의 십진수+13이 90보다 초과할 때 최종값 = (문자의 십진수+13)-97+65 예시) 알파벳 o = 111 (111+13)-97+65 = 92 ..
2021.07.05 -
백준(Backjoon) 1076, 저항
문제풀이 색의 저항값과 곱의 관계는 10의 제곱으로 표현이 가능하다. 색의 곱 = 10^색의 저항값 위의 문제를 해결하기 위하여 JAVA언어의 enum 열거형을 사용하였고 처음 두 색상의 저항값들을 문자열로 연결한 다음 정수형으로 변환하고 마지막 색상의 곱과 곱하여 값을 도출할 수 있었다. 여기서 주의할 점은 최종 결과값의 타입을 int 타입이 아닌 long 타입으로 설정하였다. 왜냐하면 white, white, white와 같은 저항이 입력된다면 int타입으로는 값을 표현할 수 없기 때문이다. 소스코드 public class Main { private enum electrical {black, brown, red, orange, yellow, green, blue, violet, grey, white}..
2021.07.02