Java/알고리즘

문제 링크[level 0] 최빈값 구하기 - 120812 Note풀어본 level 0 문제 중에 제에에에일 어려웠던 문제... (점수도 3점인가 5점인가 주는거 보면 어려운 것 맞는 것 같다.)HashMap 안에서 최대 Value의 Key를 쉽게 가져올 수 있을까 해서 검색 해봤는데, compare를 쓰기엔 내 지식이 부담스러워서언제나 애용하는 for 문을 사용하기로 했다. 주어진 배열의 인자가 모든 같은 경우를 고려하지 않아서 예외 케이스를 찾는데에 시간이 걸렸다. 처음에 int maxValue = Collections.max(map.values()); 를 key를 반환한다고 착각하고 썼는데, 테스트 케이스가 모두 정답으로 넘어갔다. 테스트 케이스는 교묘하게 최빈 key값의 빈도가 key와 같다는 것이..
문제 링크[level 1] 푸드 파이트 대회 - 134240 NoteStringBuffer로 reverse를 사용했다.다른 사람 풀이를 보니 answer의 양쪽에 추가하는 쉬운 but 떠올리진 못한 방법이 인상적이어서 남겨두기 Key- StringBuffer- .reverse().toString() 제출한 코드class Solution { public String solution(int[] food) { String answer = ""; // food의 인자를 하나씩 꺼내서 /2 의 값만큼 answer의 앞에서부터 추가 // answer에 0을 추가하고 대칭해서 결과 리턴 int i = 0; String ans = "";..
문제 링크[level 0] 대소문자 바꿔서 출력하기 - 181949 Note오랜만에 프로그래머스 코테 문제 풀어보는 중.기본적인 함수들은 외워져있다면 평소에 시간을 많이 아낄 수 있을 것 같다for-each는 실무에서 정말정말정말로 많이 쓰고 있어서 익숙하다. Key Method.toCharArray()string.toCharArray()Converts this string to a new character array.string을 char 타입 배열로 바꿔준다. 향상된 for문 안에서 한글자씩 변수로 사용하는데에 사용. .isLowerCase(char)Character.isLowerCase(letter)Determines if the specified character is a lowercase cha..
문제 링크 [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 1] 자릿수 더하기 - 12931 Note Key answer += Integer.parseInt(String.valueOf(N.charAt(i))); answer += N.charAt(i) - '0'; Integer.toString(n); 제출한 코드 import java.util.*; public class Solution { public int solution(int n) { int answer = 0; String N = Integer.toString(n); for(int i = 0; i < N.length(); i++){ answer += N.charAt(i) - '0'; //System.out.println(N.charAt(i)); } return answer; } }
문제 링크 [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..
문제 링크[level 1] 가장 가까운 같은 글자 - 142086 Noteadd(), put() 같이 쓰니가 바꿔 쓰고 그랬다...처음에 설정된 반환 타입(int배열)을 List로 바꿔서 List를 배열로 바꾸는 것을 생략했다. KeyHashMapmap.containsKey()주어진 key가 map에 포함되어 있는지 확인.toCharArray()문자열을 Char 타입 배열로 변환 제출한 코드import java.util.*;class Solution { public List solution(String s) { List answer = new ArrayList(); // s를 한 글자씩 이전에 등장했는지 확인하고 map에 인덱스와 추가 // map..
다이나모 제이
'Java/알고리즘' 카테고리의 글 목록