문제 링크[level 0] 최빈값 구하기 - 120812 Note풀어본 level 0 문제 중에 제에에에일 어려웠던 문제... (점수도 3점인가 5점인가 주는거 보면 어려운 것 맞는 것 같다.)HashMap 안에서 최대 Value의 Key를 쉽게 가져올 수 있을까 해서 검색 해봤는데, compare를 쓰기엔 내 지식이 부담스러워서언제나 애용하는 for 문을 사용하기로 했다. 주어진 배열의 인자가 모든 같은 경우를 고려하지 않아서 예외 케이스를 찾는데에 시간이 걸렸다. 처음에 int maxValue = Collections.max(map.values()); 를 key를 반환한다고 착각하고 썼는데, 테스트 케이스가 모두 정답으로 넘어갔다. 테스트 케이스는 교묘하게 최빈 key값의 빈도가 key와 같다는 것이..
문제 링크 [level 1] 정수 내림차순으로 배치하기 - 12933 Note long 타입 n의 길이(자릿수)를 구하기 위해서 String N = n + "" 꼼수를 또 썼다. 반성하자 역순으로 정렬할 때 익숙한 for 문만 써왔는데, 이제 정말 새로운 것에 익숙해져야겠다. 계속 나오기 때문에. 익숙한 방식들로는 금방 해결할 수 있는 문제였다. 아는 것들로 어떻게든 하는 것을 넘어서 효율적인 코드를 고민해보고 싶다. Key 제출한 코드 처음 작성한 코드. import java.util.*; class Solution { public long solution(long n) { //n을 10으로 자릿수 만큼 나눠서 배열에 담는다. //배열을 정렬한다. //배열을 역순으로 정렬한다. //Long타입으로 리턴..
문제 링크 [level 2] 숫자의 표현 - 12924 Note 수학 문제. 코드 작성을 위한 메서드를 아는 것 보다 수학을 알아야 해서 까다롭다. 하지만 개인적으로는 더 선호함 :) Key n이 홀수면 약수의 개수, n이 짝수면 약수 중 홀수의 개수 제출한 코드 class Solution { public int solution(int n) { int answer = 0; // n = 짝수 : 모든 약수 개수 / n =홀수 => 홀수 약수 개수 for(int i = 1 ; i
문제 링크 [level 2] 최솟값 만들기 - 12941 Note 두 배열 인자의 곱의 합이 최소가 되게 하기 위해서는 곱이 최소가 되게 하기 위해 한 배열에서는 가장 작은 수, 다른 배열에서는 가장 큰 수가 곱해지도록 해줍니다. 그러기 위해서 두 배열의 인자를 정렬하고 각 배열의 양 끝의 인자들부터 곱해주는 loop를 만들어줍니다. for 문 안에서 각 배열의 인덱스에 사용할 두 개의 변수를 사용했습니다. Key sort(int[] a) Sorts the specified array into ascending numerical order. 배열을 오름차순으로 정렬 제출한 코드 import java.util.*; class Solution{ public int solution(int []A, int []..
문제링크 https://school.programmers.co.kr/learn/courses/30/lessons/42577 Note 배열, 반복문으로도 가능할 것 같았지만 해시 문제라 해시를 사용(여전히 hash 문제 도전중) 처음엔 map의 key를 들고 phone_book 배열 인자들이 key를 포함하고 있는지 비교하며 순회했으나 실행결과는 넘어가는데 효율성 테스트가 전부 시간 초과. 마지막 테스트 시간만 봐도 어마어마하다. 배열 loop를 하나라도 줄이기 위해서 substring과 key를 비교하는 방법으로 코드를 바꿨다. Key 1. map.containsKey() 2.substring(int beginIndex, int endIndex) beginIndex랑 endIndex가 매번 헷갈리는데, ..
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/42576 Note 해시를 잘 활용하고자 여러 문제들을 풀어보고 있습니다. 익숙해지면 유용하게 활용할 수 있을 것 같아요. 이번 문제 푸는 로직은 간단했습니다. 참가자에서 이름이 나오면 +1, 완주자에서 나오면 -1. 동명이인도 별도 체크가 필요없는 방법입니다. getOrDefault() 메서드는 해쉬맵 문제에서는 내내 유용하게 쓰고 있습니다. for-each를 공부하고도 잘 안 써서 쓸 때마다 낯선데, 자주 써서 익히려고 합니다. Key 1. key=이름, value=참가(+1)/완주(-1) 2. getOrDefault(Object key, V defaultValue) Returns the..
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/120886 Note HashMap의 다양한 활용 사례를 익히려고 집중적으로 푸는 중 !! 제출한 코드 import java.util.*; class Solution { public int solution(String before, String after) { //HashMap 사용, key:알파벳, value:갯수 HashMap beforeMap = new HashMap(); HashMap afterMap = new HashMap(); for(int i = 0; i < after.length() ; i++){ bef..
문제링크 https://softeer.ai/practice/6283 Note 두 배열의 비교하는 것이 관건이었던 문제 서로 다른 두 배열을 단순히 == 로 비교하면 각 배열의 주소값을 불러오기 때문에 당연히 false 이다. 두 배열의 요소를 비교 하려면 .equals()를 사용하자 Key Arrays.equals(array1, array2) 제출한 코드 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException { Scanner sc = new Scanner(System.in); int[] arrInput = new int[8]; for(int i = 0 ..
문제 링크[level 0] 피자 나눠 먹기 (3) - 120816 Note조건이 true이면 실행을 반복하는 while 문을 사용함.피자 나눠 먹기 시리즈 중 가장 간단하다고 생각됨. Keywhile 문 제출한 코드class Solution { public int solution(int slice, int n) { int answer = 1; while(slice * answer
문제 프로그래머스/2/42842. 카펫 Note 어떻게 풀지 너무나도 고민했다... 처음에 미지수를 너무 많이 둬서 뱅글뱅글 돌았다. 으윽 하지만 결국 내가 생각해낸 방법으로 해결! 왠지 훨씬 쉬운 방법이 있을 것 같고 그것이 충격적일 것 같아서, 다른 사람 풀이는 천천히 봐야겠다... Key yellow의 인수(=yellow의 가로세로) 제출한 코드 class Solution { public int[] solution(int brown, int yellow) { //yellow 의 세로 l, 가로 yellow/l int l = 1; //answer = {yellow/l+2, l+2} //brown = 2(yellow/l) + 2l + 4 //yellow의 인수를 하나씩 넣어서 brown 식 충족하면 a..