본문 바로가기

분류 전체보기

(197)
[프로그래머스 Java] 모의고사 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr ⏱소요 시간 - 1시간 40분 🔑해결 방법 하... 이 문제는 정말 힘들었다. 수식을 찾는 것 까지는 괜찮았는데 배열을 통해서 가장 많이 맞힌 사람을 저장하려고 하니, 동일 점수가 있을수록 뭔가 꼬였다. 왜냐? 배열의 길이는 한 번 정해지면 유동적으로 바꿀 수 없기 때문이다......ㅠ 그러므로 앞으로 유동적인 무언가를 저장할 때는 리스트를 사용하자. 절대 잊지말자!!! 또 한 가지, a, b, c 배열이 answers 배열의 길이보다 작은 경우를 생각해줘야하는..
[프로그래머스 Java] 완주하지 못한 선수 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr ⏱소요 시간 - 30분 🔑해결 방법 문자열도 정렬이 가능하다. 문자열을 정렬해서 두 배열을 같은 순서대로 비교하면서 달라지는 순간! 그 사람은 완주하지 못했다고 할 수 있다. 완주하지 못한 선수가 한 명이라서 가능했던 문제 여러 명이 되면 정렬로 구현이 불가능하지 않을까 싶다. 다만, 헤맸던 부분은 answer = participant[i + 1]; ---> 이 부분을 추가해줘야 함 완주하지 못한 선수가 participant에서 맨 마지막 사..
[프로그래머스 Java] 두 개 뽑아서 더하기 코딩테스트 연습 - 두 개 뽑아서 더하기 정수 배열 numbers가 주어집니다. numbers에서 서로 다른 인덱스에 있는 두 개의 수를 뽑아 더해서 만들 수 있는 모든 수를 배열에 오름차순으로 담아 return 하도록 solution 함수를 완성해주세요. 제한 programmers.co.kr ⏱소요 시간 - 1시간 30분 🔑문제 해결 전체적인 부분은 쉽게 풀었는데 바보 같이 헤맸던 부분 ---> int j = i + 1 (기준이 되는 수는 고정해두고, 비교 대상이 되는 수들이랑 비교할 때는 기준이 되는 수는 제외하니까 i + 1 !!!!) 배열에서 중복되는 값은 제거해야하므로 자동으로 제거하기 위해 set에 저장했다. 그리고 set을 list로 변환하고 list를 다시 배열로 변환했다. (리턴값이 배열..
List <-> int[] int[] -> List 변환 int[] result = new int[10]; List list = Arrays.stream(result).boxed().collect(Collectors.toList()); List -> int[] 변환 int[] answer = list.stream().mapToInt(i->i).toArray(); List list = new ArrayList(); list.add(1); list.add(2); list.add(3); list.add(4); int[] answer = new int[list.size()]; // 1. 리스트의 사이즈만큼 배열을 만들고 for(int i = 0; i < list.size(); i++) { // 2. 리스트를 돌면서 배열에 추가 answe..
[프로그래머스 Java] 크레인 인형뽑기 게임 코딩테스트 연습 - 크레인 인형뽑기 게임 [[0,0,0,0,0],[0,0,1,0,3],[0,2,5,0,1],[4,2,4,4,2],[3,5,1,3,1]] [1,5,3,5,1,2,1,4] 4 programmers.co.kr ⏱소요 시간 - 2시간 🔑문제 해결 인형 뽑기를 해서 배열에 넣고 중복을 제거할 때 다시 배열을 리스트로 변환하는 짓을 했다. 그래서인지 로직은 맞는데 테스트 케이스 1, 2번이 틀렸다고 했다. 애초에 배열에 넣지 않고 리스트에 넣고 시작을 하니 같은 로직으로 정답을 얻어냈다. 이게 뭐라고 두 시간이나 걸렸다^^ 나중에 또 풀 때 수식 부분이 이해가 가지 않으면 이차원 배열의 인덱스를 그려서 생각해보면 바로 답이 나올 것이다! 🔎나의 소스 코드 package step1; import ja..
TreeSet TreeSet이란? 이진 검색 트리라는 자료구조의 형태로 데이터를 저장하는 컬렉션 클래스로 정렬, 검색, 범위 검색에 유리하다. 중복된 데이터의 저장을 허용하지 않으며 정렬된 위치에 저장하므로 저장 순서를 유지하지도 않는다. (중복 X, 순서 X) 다만, 순차적으로 저장하지 않기 때문에 추가 삭제에 시간이 걸린다는 단점이 있다. 정렬에 유리함을 보여주는 예제 아래 예제는 set.add()를 통해 set에 값을 저장하고 이를 출력하는 예제이다. TreeSet은 저장할 때 이미 정렬하기 때문에 읽어올 때 따로 정렬할 필요가 없다. 어떻게 이럴 수가 있지? TreeSet에 Integer 인스턴스를 저장했을 때 정렬되는 기준이 compareTo()이기 때문이다. 즉, Integer 클래스가 이미 Comparab..
[프로그래머스 Java] 해시 - 전화번호 목록 배열의 요소 중 하나가 다른 요소의 접두어인지 확인하는 문제 String 클래스의 startsWith(), endsWith()와 같은 것을 생각할 수 있다. 번외로 indexOf()나 contains()로 풀이한 것도 있으니 문자열 관련 내용이 나오면 이와 같은 메서드를 활용해보자. + 해시를 이용한 문제이니 나중에 꼭 해시로 풀어보자. public class Ex2 { public static void main(String[] args) { String[] phone_book = { "123", "456", "789" }; System.out.println(solution(phone_book)); } public static boolean solution(String[] phone_book) { boo..
[백준 10989 Java] 수 정렬하기 - 계수 정렬 계수 정렬 (Counting Sort) 개수가 정해져 있는 경우에 가장 빠른 정렬 결과를 얻을 수 있는 알고리즘 요소 값을 비교하지 않고 카운팅을 저장할 배열을 생성하여 각각의 요소가 몇 번 등장했는지 센 후, 그 배열을 출력 아래 예제를 통해 확인해보자. package exsort; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; // 계수 정렬 (카운팅 정렬) public class Ex3_1 { public static void main(String[] args) throws IOException { // 입력 가능한 수의 범위 (1~10..