목록코딩테스트 (88)
100세까지 코딩
문제 설명 풀기 전 생각 나머지 기호로 짝수, 홀수를 나누기 문제가 원하는 계산을 한 후 그것에 맞는 크기로 temp 배열을 생성하여 복사하기 arr에 temp를 얕은 복사 하여 계산 후 나온 배열을 지속적으로 전역적으로 쓸 수 있게 하기 class Solution { public int[] solution(int[] arr, int[] query) { int[] answer = {}; for(int i = 0 ; i < query.length; i++) { // query 배열 끝까지 if(i%2 == 0) { // 짝수면 int[] temp = new int[query[i]+1]; // query[i]번 뒷부분을 자르면 남는 크기로 temp 배열을 만듬 for(int j = 0; j < temp.le..
문제 설명 풀기 전 생각 4개의 숫자를 배열에 넣어 오름차순으로 정렬하기 반복문을 돌려 i와 i+1을 비교해서 같으면 same ++ 하고 sameValue에 값 넣기 이전 sameValue가 0이 아니고 현재 값과 다르면 중복이 2개라는 표시하기 앞과 비교해서 다르면 이전 중복 값과 현재 값이 비교, 같으면 arr[i+1]을 differentValue에 넣고 그 이외에는 arr [i]를 differentValue에 넣기 same과 twoSameValue로 경우를 나눠 게임 방식대로 계산 class Solution { public int solution(int a,int b, int c, int d) { int[] arr = {a, b, c, d}; int answer = 0; int same = 0; /..
문제 설명 풀기 전 생각 반복문을 돌려 cnt가 n*n개가 되면 반복을 멈추기 나선형이니 오른쪽 -> 아래쪽 -> 왼쪽 -> 위쪽을 반복하기 if문을 방향마다 나눠서 그 방향으로 계속 진행하는 반복문을 실행 반복문을 실행하다가 끝지점에 왔거나 진행 방향의 다음칸이 0 이 아닌 다른 숫자가 이미 있으면 방향 전환 class Solution { public int[][] solution(int n) { int[][] answer = new int[n][n]; // n X n 크기의 배열 생성 int cnt = 0; // 갯수 int direction = 1; // 방향 1: 오른쪽, 2: 아래쪽, 3: 왼쪽, 4: 위쪽 int x = 0; // 행 int y = 0; // 열 while(cnt < n*n){..
문제 설명 풀기 전 생각 quiz배열을 순회하면서 공백을 기준으로 수식을 자른것을 새로운 배열(formula)에 넣기 formula 배열에서 수식 부분을 + , - 인지 확인 만약 +이면 string의 숫자를 int로 바꿔 덧셈을 하고 결과 확인 후 맞으면 O, 틀리면 X -일때도 동일 class Solution { public String[] solution(String[] quiz) { String[] answer = new String[quiz.length]; // 답변 배열은 퀴즈만큼의 길이 for(int i = 0 ; i < quiz.length;i++){ String[] formula = quiz[i].split(" "); // 공백을 기준으로 수식을 자르기 if(formula[1].equal..
문제 설명 풀기 전 생각 저번에 풀었던 기약분수 만드는 방법을 활용, 최대공약수(gcd)를 구하기 5로 나눠 떨어질 때까지 나누기, 2로 나눠 떨어질 때까지 나누기 나누고 난 값이 1만 남으면 소인수는 2,5만 존재 1 이외의 값이 남아있으면 소인수는 2,5 외에도 있음 class Solution { public int solution(int a, int b) { int answer = 0; b = b / gcd(a, b); //분모를 최대공약수로 나눠 기약분수형태의 분모로 바꿔줌 while ( b % 5 == 0) { // 5로 나눈 나머지가 0이면 5의 배수 b /= 5; // 5로 나눈 수를 b에 다시 대입 } while (b % 2 == 0) { // 2로 나눈 나머지가 0이면 2의 배수 b /=..
문제 설명 풀기 전 생각 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 =..