자바 초급문제로 맨땅에 해딩하기 62

다시 시작하는 프로그래머스 문제7. K번째 수

생각하기에 command 와 answer 의 길이는 같으며, command 의 원소 -1 값이 잘라낼 값, 추출할 인덱스 넘버 인덱스 조작을 위해 index 변수 , 추출할 숫자를 위해 point 지정 while문을 돌려서 copyOfRange 로 새로운 배열 리턴하고 sorting 추출 후 인덱스 증가시켜서 while 탈출 플래그 성립 리턴 import java.util.*; class Solution { public int[] solution(int[] array, int[][] commands) { int[] answer = new int[commands.length]; int index = 0; int point = 0; while(index < commands.length) { int[] new..

다시 시작하는 프로그래머스 문제6. 나누어 떨어지는 숫자 배열

소팅하고 끌어오면 문제는 간단해진다고 생각 함. for 문돌려서 answer 의 길이를 추출 len 이 0 이라면 배열에 넣을 값이 없으므로 -1 넣은 배열 리턴 값이 len 이 1 이상이라면 값이 있으므로 len 재사용하여 값 할당 리턴 import java.util.*; class Solution { public int[] solution(int[] arr, int divisor) { Arrays.sort(arr); int len =0; for(int i=0 ;i

다시 시작하는 프로그래머스 문제5. 가운데 글자 가져오기

길이는 나눌 것이므로 변수에 저장한다. 길이를 2로 나눈 값은 기준이 될 index 번호이다. ( +1 되있는 상황이다. ) len % 2 != 0 이라면 홀수이며 가운데 자리 하나를 빼내야함을 의미함. len % 2 == 0 이라면 짝수이며 index 와 index-1 까지를 추출해야함을 의미한다. subString 으로 자른다. index를 기준으로 삼으니 편했다. class Solution { public String solution(String s) { int len = s.length(); int index = len / 2; String answer = ""; if (len % 2 == 0) { // 나눈 수가 짝수라면 길이가 짝수다. answer = s.substring(index - 1, ..

다시 시작하는 프로그래머스 문제4. 2016년

윤년이던 아니던 해당 년의 모든 일수를 배열로 나열함 1월 1일은 금요일, 그럼 2105 년 12월 31 일은 목요일 그래서 목요일부터 배열시작 해당 달 전까지 더하고 일수 더하면 한해의 흘러간 일 수. 7로 나눈 나머지는 일 수 리턴. class Solution { public String solution(int a, int b) { int[] year = new int[] { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; String[] days = new String[] { "THU", "FRI", "SAT", "SUN", "MON", "TUE", "WED" }; int dayCount = 0; for (int i = 0; i < a - 1; i++) { ..

다시 시작하는 프로그래머스 문제3. 체육복

1씩 채운다. 각 배열의 원소는 인덱스 + 1 값이므로 -1 해서 해당 인덱스로 잡아 student에서 빼거나 더한다. 1부터 시작하고 length-1 까지 루프를 돌렸다. 중간을 기준으로 앞뒤를 잡으려고 그랬다. 그렇다면 첫수와 끝수의 고려가 필요해져서 분기를 놓았다. 맞았다. class Solution { public int solution(int n, int[] lost, int[] reserve) { // 총 학생 수, 반드시 앞 뒤에서만 빌려줄 수 있음. 인덱스 기준으로 함. int[] student = new int[n]; // 세팅 for (int i = 0; i < student.length; i++) { student[i] += 1; } for (int i = 0; i < reserve...

다시 시작하는 프로그래머스 문제1. 두개 뽑아 더하기

import java.util.*; class Solution { public int[] solution(int[] numbers) { List list = new ArrayList(); for (int i = 0; i < numbers.length; i++) { for (int j = i + 1; j < numbers.length; j++) { int temp = numbers[i] + numbers[j]; if (!list.contains(temp)) { list.add(temp); } } } Collections.sort(list); int[] answer = new int[list.size()]; for (int i = 0; i < list.size(); i++) { answer[i] = list..

자바 Level 2 문제, 5. 전화번호 목록

프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/42577) 자바 Level 2 문제의 전화번호 목록 이다. /* 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한 사항 phon..

자바 초급문제 31. 행렬의 덧셈

프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/12950) 자바 초급문제의 행렬의 덧셈 이다. 2차원 배열만 보면 두근거리고 , 그만큼 두렵기도하다. 마치 좌표판이나 바둑판을 바라보는 듯한 느낌을 받게된다. 이번 문제는 1차원 배열 값이 같고 answer 의 길이도 그와 같기 때문에 그렇게 문제를 받지는 않았는데, 그 점으로 풀었다는 것이 마음에 걸린다. 더 깊은 2차원 배열이나 그 보다 더한 3차원 배열 을 접하면 어떨지. 그리고 그와 비슷한 hashTable 은 어떻게 풀어야 할지 여러방면으로 생각을 해보게 해주는 문제이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 class Solution { public int[][] solut..

자바 초급문제 30. 제일 작은 수 제거하기

프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/12935) 자바 초급문제의 제일 작은 수 제거하기 이다. 기존의 배열을 List에 저장하고 배열을 sort하여 가장 작은 값을 얻어낸 후 해당 수를 찾으면 list.remove로 제거한다. 일단 컬렉션의 사이즈가 1이라면 -1을 리턴해야함으로 if문으로 넘겼다. 아쉽다는 생각이든다. 더 깔끔하게 처리하고 싶어서 다시금 건드려보려고 하는 중이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 import java.util.*; class Solution { public int[] solution(int[] arr) { int [] ..