목록코딩테스트/자바 (46)
100세까지 코딩
문제 설명 풀기 전 생각 array의 원소를 새로운 배열(횟수 배열)의 index로 생각하여 나올 때마다 횟수 배열값에 +1해 주기 최빈값은 횟수 배열의 인덱스 대입, 최대로 나온 횟수는 cntMax라는 변수에 횟수 배열 값 대입 후에 나온 횟수 배열 값이 이전 cntMax와 값이 같으면 temp라는 곳에 최빈값 출현 횟수 대입 temp와 cntMax가 같으면 최빈값이 2개이므로 답은 -1, 그렇지 않으면 답은 횟수 배열 인덱스 class Solution { public int solution(int[] array) { int answer = 0; int[] cntArr = new int[1000]; // 나오는 횟수가 저장될 배열 int max = 0; // 최빈값을 저장할 변수 int cntMax =..
문제 설명 풀기 전 생각 문자열을 미는 규칙을 찾기 // 5 문자로 된 string을 오른쪽으로 한 칸씩 밀 때는 arr[(n+1)%5] 즉, 규칙은 arr[(n+밀어야 하는 횟수)% 문자열의 길이] 배열에 밀린 문자열을 넣고 string끼리 비교하기 끝까지 돌아도 같지 않으면 -1, 초기에 A와 B길이가 다르면 -1 class Solution { public int solution(String A, String B) { int answer = 0; if(A.length == B.length){ //string A와 B길이 같으면 for(int i = 0; i < A.length;i++){ for(int j = 0; j < A.length; j++){ A[i] = A[(j+i)%A.length]; // ..
문제 설명 풀기 전 생각 항과 연산기호 사이에 항상 공백이 존재하고 + 기호만 사용하니 " + "로 string을 split 하기 split 한 string 배열 중 x를 포함하면 x끼리 더하고 x를 포함하지 않으면 상수항끼리 더하기 class Solution { public String solution(String polynomial) { String answer = ""; int xSum = 0; // x값들의 합을 저장할 변수 int sum = 0; // 상수항들의 합을 저장할 변수 String[] spl = polynomial.split(" + "); // " + " 로 string 나누기 for(int i = 0; i < spl.length; i++){ if(spl[i].contains("x")..
문제 설명 풀기 전 생각 안전지대 : 0, 폭탄 : 1, 위험 지대 : 2로 두기 내가 입력하는거면 n*n 이면 (n+1) * (n+1)로 두고 (1,1)부터 시작 그러나, 매개변수로 이미 n*n을 받고 있기 때문에 모서리나 경곗값에서는 ArrayIndexOutOfBoundsException가 안 뜨게 처리해 준다 class Solution { public int solution(int[][] board) { int answer = 0; for(int i = 0 ; i < board.length; i++){ //행 순회 for(int j = 0; j < board[i].length; j++){ //열 순회 if(board[i][j] == 1){ // 폭탄이면? for(int m = i-1; m < i+2..
문제 설명 풀기 전 생각 연속된 수들 중 상수 합만 따로 구하기 total에서 상수 합을 빼고 num숫자로 나누기 class Solution { public int[] solution(int num, int total) { int[] answer = new int[num]; int sum = 0; // 연속된 수들에서 상수들만의 합 int x; // 변수 x를 저장하기 위한 변수 for(int i = 0; i num * x + sum = total for(int i..
문제 설명 풀기 전 생각 특정 조건 나누지 말고 일반 분수의 합처럼 분모끼리 곱하고 (분모 1 * 분자 2 + 분모 2 * 분자 1) 더하기 1학년때 배운 유클리드 호제법 알고리즘을 써서 최대공약수 구하기 (분자 / 분모)를 기약 분수로 나타내기 위해 최대공약수로 나누기 class Solution { public int[] solution(int numer1, int denom1, int numer2, int denom2) { int[] answer = new int[2]; int answerdenom = denom1 * denom2; // 분모끼리 곱하기 (d1 * d2) int answernumer = denom1 * numer2 + denom2 * numer1; // 분자끼리 더하기 (d1 * n2..