코딩테스트

문제 링크 [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..
문제 링크 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/7628 Note key와 Value를 저장할 수 있는 HashMap 사용 Key HashMap .put(key, value) .getOrDefault(key, defaultValue) Collection.max(count.value**s**()) 제출한 코드 import java.io.*; import java.util.*; public class Main { //각 집의 난로 반지름 길이를 담은 배열을 만든다. //난로의 반지름의 약수를 구하고 약수를 해시맵의 키로, 약수가 등장하면 벨류를 +1해준다. //각 약수들(키)을 카운팅 해서 가장 큰 수를 출력한다! public static void main(String[] args) { Scan..
문제링크 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 ..
문제 링크 https://softeer.ai/practice/6268 Key 1. 0~9 까지의 숫자를 전광판의 전구 상태를 배열로 나타낸다. 2. 숫자를 넣으면 전구 상태를 알려주는 메소드를 만든다 2-1. 켜지면 1, 꺼지면 0이다. 2-2. 실존하지 않는 '0'의 표기에 주의한다. 3. 처음 숫자와 바뀐 숫자의 각 자리수의 숫자를 비교하고, 바뀌었다면 전구 상태를 비교해서 카운트한다. Note 코드가 길어서 중간중간 디버그를 많이 해야했다. 실존하지 않는 0과 실존하는 0의 구분 없이 계산했다가 케이스의 일부만 맞아서 혼란스러웠다. 실존하지 않는 0과 실존하는 0의 구분이 필요한 것을 알고 나서는 둘의 구분을 메소드의 case와 전광판 숫자 배열에서 어떻게 나타내어 줄지 고민했다. int 배열인것을..
문제링크 https://softeer.ai/practice/6253 Note 마지막 소프티어 1단계 문제입니다.ㅎㅎ reader를 쓸까 하다가 int 타입으로 받아 바로 선언해주기 위해 scanner를 사용했습니다. 제출한 코드 import java.io.*; import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int A = sc.nextInt(); //A의 주행거리 int B = sc.nextInt(); //B의 주행거리 String answer = ""; if(A == B){ answer = "same"; } else { answer = (A ..