본문 바로가기

Problem Solving

99클럽 코테 스터디 6일차 TIL - 프로그래머스 의상 JAVA 풀이 문제🔗https://school.programmers.co.kr/learn/courses/30/lessons/42578 문제 접근설명 이 문제는 옷의 종류에 따라 조합할 수 있는 경우의 수를 구하는 문제입니다.접근법 코니가 종류 별로 입을 수 있는 옷의 가지 수는 "옷의 수 + 1" 입니다. 옷의 선택지 수에 아무것도 착용하지 않는 경우의 수 1을 더하기 때문입니다. 문제에서 주어진 예시로 설명하자면 얼굴에 착용할 수 있는 경우의 수는 안경, 선글라스, 착용 X 으로 3가지 입니다. 코니가 입을 수 있는 서로 다른 옷의 조합 수는 "종류 별 옷의 선택지 수"를 모두 곱한 뒤 "아무것도 입지 않는 경우 1"을 빼주면 됩니다. 문제 예시에서는 (2 + 1) x (1 + 1)  x (1 + 1)  x (1 .. 더보기
99클럽 코테 스터디 4일차 TIL - 프로그래머스 JadenCase 문자열 만들기 문제🔗https://school.programmers.co.kr/learn/courses/30/lessons/12951 문제 접근설명 문자열을 구성하는 각 단어의 첫 번째 문자만 대문자로, 나머지는 소문자로 변환하는 문제입니다. 접근법 입력 문자열에서 공백은 맨 처음에 위치할 수도 있고, 연속으로 여러 번 등장할 수도 있습니다. 예를 들어, 입력 예시가 다음과 같을 때 정답 문자열은 이렇습니다.입력: " " / 정답: " "입력: " happy Birth   day 2you" / 정답: " Happy Birth   Day 2you"따라서 StringTokenizer로 문자열을 자르는 것은 적합하지 않습니다. 대신 문자열 자체를 순회하는 방법이 있습니다. 문제 풀이class Solution { pu.. 더보기
99클럽 코테 스터디 3일차 TIL - 프로그래머스 문자열 내 마음대로 정렬하기 문제🔗https://school.programmers.co.kr/learn/courses/30/lessons/12915 문제 접근설명이 문제는 주어진 문자열 배열 strings를 정렬하는 문제입니다. 정렬 기준은 다음과 같습니다.문자열 원소의 n번째 문자를 기준으로 오름차순n번째 문자가 동일한 경우 알파벳 순으로 오름차순접근법문자열의 정렬 기준을 정의할 Comparator를 구현하고, Arrays.sort 메서드 호출로 strings 배열을 정렬하면 됩니다. 문제 풀이1. Comparator 구현 다음은 Comparator를 직접 구현한 풀이입니다.import java.util.Arrays;import java.util.Comparator;class Solution { public String[].. 더보기
99클럽 코테 스터디 2일차 TIL - 프로그래머스 x만큼 간격이 있는 n개의 숫자 문제🔗https://school.programmers.co.kr/learn/courses/30/lessons/12954 문제 접근설명입력으로 숫자 x와 n이 주어지면, x 부터 시작해 x 씩 증가하는 숫자 n개를 갖는 배열을 리턴하는 문제입니다.예를 들어 입력이 x=2, n=5 라면 [2, 4, 6, 8, 10]의 배열을 반환합니다.접근법x는 (-1억 최소 -1000억 부터 최대 1000억가 됩니다. int 형의 범위를 넘어가기 때문에 long[] 타입의 배열을 반환해야 합니다. 문제 풀이class Solution { public long[] solution(int x, int n) { long[] answer = new long[n]; long X = x; .. 더보기
99클럽 코테 스터디 1일차 TIL - 프로그래머스 n^2 배열 자르기 문제🔗https://school.programmers.co.kr/learn/courses/30/lessons/87390 문제 풀이1. 시간 초과 풀이 처음에는 n x n 행렬을 2차원 배열로 구현했습니다. 하지만 n의 범위는 1부터 10^7 까지로, O(n^2) 풀이는 시간 초과 되어 통과할 수 없었습니다.class Solution { public int[] solution(int n, long left, long right) { int arr[][] = new int[n][n]; // 1. 2차원 배열을 생성한다. for(int i=0; i 2. 통과 풀이2차원 배열의 행, 열과 값 사이의 수식을 통해 O(n) 안으로 해결할 수 있습니다. 문제.. 더보기
[BOJ] 백준 1978번 소수 찾기, 2581번 소수 - JAVA 자바 풀이 개요 1978번은 주어진 숫자 N개 중 소수를 찾는 문제이고, 2581번은 주어진 범위 M부터 N까지의 숫자 중 소수(+ 최소값)를 찾는 문제입니다. 두 문제 모두 소수를 찾는 문제로, 저는 두 가지 방법으로 문제를 해결했습니다.O(N^2)의 시간 복잡도를 갖는 단순 구현O(N)의 시간 복잡도를 갖는 에라토스테네스의 체 사실 단계 별로 풀어보기의 문제 설명에는 첫 번째 방법이 작성되어 있습니다.그러나 에라토스테네스의 체 방법으로도 풀이가 가능합니다.  시간과 메모리 상 큰 차이는 보이지 않는 것 같은데, 입력 값의 범위가 작아서 그렇습니다.제출한 코드로 숫자 범위를 넓혀 테스트한 결과 큰 차이가 있었습니다.  단순 구현은 M=1, N=10만에서 약 2초가 걸렸고 M=1, N=100만에서 약 23초가 걸렸.. 더보기
[BOJ] 백준 11725번 트리의 부모 찾기 - JAVA 자바 풀이 접근법트리는 그래프의 일종입니다. 문제에서 입력으로 주어지는 노드의 연결 정보는 그래프의 간선 정보나 다름 없습니다.간선 정보로 그래프를 구성한 뒤 트리의 루트인 1번 정점에서 부터 그래프 탐색을 하면 됩니다. 그래프 초기화입력으로 주어진 간선 정보를 토대로 그래프를 초기화 하는 코드입니다.각 정점에 연결된 인접 정점들을 표기하기 위해 Map> 자료구조를 사용했습니다.static Map> tree = new HashMap();public static void initTree(int v, int w) { if(!tree.containsKey(v)) { // 정점 v를 최초로 입력 받았을 경우 LinkedList list = new LinkedList(); list.add(w).. 더보기
[BOJ] 백준 1991번 트리 순회 - JAVA 자바 풀이 접근법트리 자료구조를 표현하기 위해 배열을 선언합니다. 배열의 타입은 Node[] 입니다.트리의 각 노드를 표현하기 위해 왼쪽, 오른쪽 자식을 가리킬 수 있는 Node 클래스를 선언합니다.'A' 'B' 'C' 등 각 Node의 값은 배열의 인덱스로 표현할 수 있습니다. Node 클래스class Node { int left; // 왼쪽 자식의 인덱스 int right; // 오른쪽 자식의 인덱스 public Node(int left, int right) { this.left = left; this.right = right; }} 왼쪽 자식의 인덱스와 오른쪽 자식의 인덱스를 포함하는 Node 클래스를 생성했습니다.Node 배열을 생성하고, 알파벳 A를 기준으로 .. 더보기