Problem Solving

문제https://school.programmers.co.kr/learn/courses/30/lessons/86051 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이배열에 있는 숫자(0~9)에서 없는 숫자를 더하는 문제이다. 1. 집합에 배열에 있는 숫자들을 기록한다. 2. 0~9까지 집합에 존재하지 않으면 값을 더해준다. 소스코드import java.util.HashSet;class Solution { public int solution(int[] numbers) { HashSet set = new HashSet(); for (int i = 0; i 실행결과
문제https://school.programmers.co.kr/learn/courses/30/lessons/12954 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이x에서 x만큼 더한 n개의 리스트를 구하는 문제이다.100만 * 1000의 수가 나올 수 있으므로, int값의 범위보다 넘어간다. 1. 배열의 첫번째 값으로 x를 넣어준다. 2. 이전 인덱스 값에서 x만큼 더한 값을 현재 인덱스에 넣어준다. 소스코드class Solution { public long[] solution(int x, int n) { long[] answer = new long[n]; an..
문제https://www.acmicpc.net/problem/8979 풀이각 나라마다 금, 은, 동메달의 수가 있으면 등수를 구하는 문제이다. 단, 동점자일 경우에 유의한다. 필자는 금, 은, 동메달의 수가 같은 경우(동일 등수)에 대해서 HashMap을 사용해 나라의 번호의 ArrayList 형태로 저장하려고 했다. 금, 은, 동 메달에 대한 정보를 저장하는 클래스에 대해 hashCode, equals 메서드를 오버라이딩해 재 구현을 해야했고, 메달 정보를 저장하는 클래스를 정렬을 해야했고, 구현해야하는 점이 많았다. 잘 생각해보면 정렬을 해버리면 금, 은, 동 메달의 수가 서로 붙어 있게 된다. 이전의 메달의 수와 현재의 메달의 수를 비교해서 등수를 매길 수 있지 않을까? 그리고 등수는 자신보다 등..
문제 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이옷을 조합해서 입으려고 하는데 종류마다 의상이 있다. 의상을 한개의 종류 이상으로 1개 입으면 서로 다른 코디이다.서로 다른 코디를 만들 수 있는 종류의 수를 구하는 문제이다. 이 문제의 풀이를 생각하다보면, 입지 않는 경우의 수에 대해서 어떻게 생각을 하지?라는 의문점이 든다.각 종류마다 "입지 않음"이라는 의상이 하나 더 있다고 치면 풀이가 쉬워진다. 입지 않음의 의상을 추가하고 모든 종류의 의상을 입지 않음의 경우의 수만 제거하면 되지 않을까?라는 생각이 든다. 그러면 한개의 의상은 무조건 입었다고 말할 수 있다. 1. HashMap을 통해 종류마다 ..
문제https://school.programmers.co.kr/learn/courses/30/lessons/12922 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이"수","박" 문자열이 반복되는 패턴이 있는데, 길이가 n인 문자열을 구하는 문제이다. i를 0부터 돌면서 짝수면 "수" 홀수면 "박"을 붙인다. 새로운 문자열을 만들어서 + 연산으로 문자열을 붙이는 것보다 StringBuilder를 사용해서 붙이는게 더 효율적이라고 생각했다. String은 불변성 객체이므로, 한번 생성되면 내용을 변경할 수 없어서 새로운 String객체가 생성해서 붙여야한다.StringBuilder는 가변성 객체이므로, 한번 ..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이유저끼리 서로 신고를 하는 시스템에서 신고를 받은 사람이 k번 이상일 경우 신고를 한 사람들이 메일을 발송하는데, 각 유저마다 메일을 받는 횟수를 구하는 문제이다. 신고가 겹칠 수 있는 가능성이 있으므로, 중복을 고려하지 않아도 되는 집합을 사용하는게 좋다고 생각했다. 문자열을 인덱스로 매핑해야하는 과정에서 Map을 사용하는게 유리하다고 생각했다. 신고를 받은 사람의 Map을 사용해서 의 쌍을 저장하면 문제를 해결할 수 있다.신고를 하는 횟수는..
문제https://school.programmers.co.kr/learn/courses/30/lessons/43238 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이입국심사의 심사대에서 심사하는 시간이 주어지는데, n명 사람들이 입국 심사를 받는데 걸리는 최소 시간을 구하는 문제이다. 데이터 범위를 보자.입국심사를 받는데 사람들의 수: 최대 10억심사를 받는 시간: 최대 10억심사대: 10만 10억이라는 데이터를 처리하는 과정에서 로그연산으로 끝낼 수 있는 알고리즘을 사용해야한다. 이분탐색을 사용하면 된다.범위를 좁혀가면서 n명을 mid시간 이내에 처리가 되는가?를 계속 물어보면 된다고 생각했다.mid로 처..
문제 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이인접한 두 풍선을 터트릴 수 있는데, 남길 수 있는 풍선의 수를 구하는 문제이다. 이 문제의 키포인트는 인접한 풍선중에 작은 풍선을 한번만 터트린다는 것이다. 터지는 풍선의 조건을 어떻게 될까?어떤 임의의 위치에서 풍선에서 왼쪽, 오른쪽의 최솟값보다 크다는 것은 터지는 풍선이라는 의미이다. 만약에 왼쪽 오른쪽 끝에서부터 번갈아가면서 큰 풍선들을 터트렸다고 치자.그러면 제일 왼쪽, 오른쪽에서 제일 작은 풍선 두개가 남을 것이다. 그러면 나머지 풍선들은 다 터졌다. 결국 현재 위치를 기준으로 왼쪽, 오른쪽 최솟값보다 크다는 것은 터지는 풍선이다. 나머지는 남길..
문제https://school.programmers.co.kr/learn/courses/30/lessons/76501 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이1. 수에 대한 부호의 배열을 보고 분기해서 합을 구하는 문제이다. 2. signs가 false면 -1을 곱한 값을 더하고, true면 값을 더한다. 소스코드class Solution { public int solution(int[] absolutes, boolean[] signs) { int answer = 0; for (int i = 0; i 실행결과
문제 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이배열에 있는 수에서 divisor로 나누어 떨어지는 값을 오름차순으로 정렬된 값을 구하는 문제이다. 1. Arrays.stream()을 이용해서 divisor로 나누어 떨어지는 값을 추출하고 오름차순을 정렬한다. 2. 배열이 비어있을 때 예외처리를 해준다. 3. 배열을 리턴한다. 소스코드import java.util.Arrays;class Solution { public int[] solution(int[] arr, int divisor) { int[] answer = Arrays.stream(arr) ..
gretea5
'Problem Solving' 카테고리의 글 목록 (3 Page)