풀이 과정 3으로 나누기만 하면 바로 풀리는 문제이다. 왜D3인지 모르겠는 문제이다. 정답 코드 package D3; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Solution_13218_조별과제 { //월화수 오전 9 ~ 10 시 30분 까지 진행되는 수업 //N명의 수강생 //한 조에 3명 이상의 학생으로 조를 구성해야 하며 구성된 조의 최댓값을 구하는 문제 //3명을 못 채우면 버리기 static int T; //테스트 케이스 static int N; //학생의 수 public static void main(String[] args) throws Numb..
알고리즘
풀이 과정 시작 시간과 종료 시간을 더해서 24 보다 작은지, 큰지, 같은지에 대한 조건 처리만 잘 해주면 어렵지 않게 풀리는 문제였다. 정답 코드 package D3; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Solution_12368_24시간 { static int T; //테스트케이스 개수 static int A; //시작 시간 static int B; //종료 시간 public static void main(String[] args) throws NumberFormatException, IO..
풀이 방법 짝수일 경우와 홀수일 경우에서 주어진 조건대로 연산해준다. 그 과정을 거치면서 num이 1이 될 때의 answer를 출력해주는데 int의 범위에 신경을 써주어야 하는 문제였다. 틀린 코드 class Solution { public int solution(int num) { int answer = 0; int cnt = 0; while(true) { if(num == 1 ){ answer = 0; break; } //짝수일 때 if(num % 2 == 0 ){ num = num / 2; answer++; if(answer >= 500) { answer = -1; break; } if(num == 1) { break; } } //홀수일 때 if(num % 2 == 1) { num = (num * ..
풀이 방법 String은 == 이 아니라 equals 를 사용해서 비교해주는 것만 제대로 알면 바로 풀리는 문제다. 정답 코드 class Solution { public String solution(String[] seoul) { String str = "Kim"; String answer = ""; int idx = 0; for(int i=0; i
풀이 과정 a와 b의 크기를 비교해서 더해주기면 하면 쉽게 풀리는 문제였다. 정답 코드 class Solution { public long solution(int a, int b) { long answer = 0; if(a < b) { for(int i=a; i b) { for(int i=b; i
풀이법 틀린 코드 import java.util.*; class Solution { public boolean solution(int x) { //각 자리수를 나누어 더하기 //더한 수로 x를 나누기 boolean answer = false; //각 자리수를 나누어 더한 합 int sum = 0; //x값 잠시 가져다 쓸 변수 int temp = x; //자리수를 나누어 저장해 줄 리스트 List list = new ArrayList(); while(x != 0) { list.add(temp%10); temp = temp / 10; } for(int i=0; i
풀이법 n이 양의 정수 x의 제곱인지 아닌지 판별하여 제곱이라면 x+1의 제곱을 반환한다. 제곱인지 아닌지 찾기 위해서 for문을 돌려서 판별해 보았지만 테스트 케이스에서 틀린 것이 있었다. 풀이법을 고민하다가 sqrt 와 pow 를 사용하여 문제를 풀면 쉽게 풀린다는 것을 알게 되었다. 정답 코드 class Solution { public long solution(long n) { //sqrt를 사용하여 제곱근으로 바꾸고 //pow로 제곱을 했을 때 n이면 n+1의 제곱 리턴 if(Math.pow((int)Math.sqrt(n), 2) == n) { return (long)Math.pow(Math.sqrt(n)+1, 2); } return -1; } } sqrt와 pow를 적절하게 사용하면 쉽게 풀리는..
풀이법 정수 long을 입력 받고 가장 큰 숫자부터 차례대로 내림차순 정렬한 후 출력한다. long을 배열에 넣고 정렬하면 시간 초과가 날거 같아서 어떤 식으로 풀어야 하는지 고민하였다. long n을 String 으로 바꾸어 배열에 넣는다. 배열을 내림차순으로 정렬한다. StringBuilder를 사용하여 하나씩 추가한다. 그리고 다시 Long으로 형변환 후 출력한다 틀린 풀이 import java.util.*; class Solution { public long solution(long n) { //% 와 / 를 이용해서 //n을 뒤에서부터 하나씩 자른 후 list에 추가 //n의 자리 수 뒤에서부터 줄여나가기 List list = new ArrayList(); long answer = 0; Stri..