[프로그래머스] 가장 큰 수 풀이 (정렬)
·
Algorithm
문제 소개오늘 풀었던 프로그래머스 - 가장 큰 수 문제를 정리합니다.이 문제는 여러 정수를 이어 붙여서 만들 수 있는 가장 큰 수를 찾는 문제입니다.단순히 숫자 크기 순으로 정렬하는 것이 아니라, 이어 붙였을 때 더 큰 숫자가 되는 순서를 기준으로 정렬해야 합니다.문제 링크: 가장 큰 수 - 프로그래머스문제 접근 방식이 문제는 다음과 같은 방식으로 접근했습니다:숫자를 문자열로 변환하여 배열에 저장합니다.두 문자열을 이어붙인 결과 (ab, ba)를 비교하여 더 큰 쪽을 우선하도록 정렬합니다.정렬이 끝난 문자열들을 차례로 이어붙여 최종 결과를 만듭니다.가장 앞자리가 0이면(예: [0, 0, 0]) 결과는 "0"을 반환합니다.해결 과정 및 코드핵심 아이디어"a"+"b"와 "b"+"a"를 비교하여 더 큰 문자열..
Arrays 유용 메서드 정리
·
Code Odyssey
👉 1. Arrays 유용 메서드 요약 정리copyOfRange여러 요소 중 일부 범위만 복사copyOf원본 범위를 원하는 길이로 복사sort정렬 (기본 오름차순 정렬)sort(, Comparator)사용자 정의 기준으로 정렬equals두 배열이 같은지 비교toString배열을 문자열로 변환fill배열 특정 값으로 채워넣기binarySearch정렬된 배열에서 지정 값 검색📌 2. Arrays 메서드 별 사용 및 주의사항▪ Arrays.copyOfRange(T[] original, int from, int to)기능 : 배열의 일부분을 복사해서 새로운 배열을 만듬.(from 인덱스 포함, to 인덱스 미포함)int[] arr = {1, 2, 3, 4, 5};int[] newArr = Arrays.cop..
[프로그래머스] K번째 수 풀이 (정렬)
·
Algorithm
문제 소개오늘 풀었던 프로그래머스 - K번째 수 문제를 정리합니다.이 문제는 주어진 배열에서 특정 구간을 잘라 정렬한 후, k번째 수를 구하는 작업을 반복하는 문제입니다.문제 링크: K번째 수 - 프로그래머스문제 접근 방식이 문제는 다음과 같은 방식으로 접근했습니다:주어진 commands 배열을 순회합니다.각 명령어마다 array의 일부를 잘라 복사합니다. (Arrays.copyOfRange 사용)복사한 배열을 오름차순 정렬합니다.정렬된 배열에서 k번째 숫자를 찾아 결과 배열에 저장합니다.해결 과정 및 코드핵심 아이디어copyOfRange를 통해 배열을 잘라낸다. (i-1부터 j까지)잘라낸 배열을 정렬한다.k번째 요소(k-1 인덱스)를 결과 배열에 저장한다.코드시간 복잡도 : O(M × N log N)M..
[프로그래머스] 완주하지 못한 선수 풀이 (Hash)
·
Algorithm
문제 소개오늘 풀었던 프로그래머스 - 완주하지 못한 선수 문제를 정리합니다.이 문제는 마라톤에 참여한 선수 중 단 한 명, 완주하지 못한 선수를 찾는 문제입니다.동명이인이 있을 수 있기 때문에, 단순한 포함 여부 체크가 아니라 이름의 등장 횟수를 정확히 비교하는 것이 핵심입니다.문제 링크: 완주하지 못한 선수 - 프로그래머스문제 접근 방식이 문제는 다음과 같은 방식으로 접근했습니다:HashMap을 이용하여 참가자의 이름과 등장 횟수를 기록합니다.완주자의 이름을 하나씩 처리하면서 등장 횟수를 차감합니다.등장 횟수가 0이 아닌 선수가 완주하지 못한 선수입니다.해결 과정 및 코드핵심 아이디어참가자 이름을 HashMap에 저장하고, 완주자 이름을 만나면 값을 감소시킨다.최종적으로 값이 0이 아닌 이름을 찾아 반..
[프로그래머스] N으로 표현 풀이 (DP)
·
Algorithm
문제 소개오늘 풀었던 프로그래머스 - N으로 표현 문제를 정리합니다.이 문제는 숫자 N을 사칙연산과 이어붙이기만으로 target number를 만드는 문제입니다.문제의 핵심은 "N을 최대 8번까지 사용해서 최소한의 사용으로 target을 만들 수 있는지"를 찾는 데 있습니다.문제 링크: N으로 표현 - 프로그래머스문제 접근 방식이 문제는 다음과 같은 방식으로 접근했습니다:DP(동적 프로그래밍) 을 이용해 점진적으로 가능한 숫자들을 만들었습니다. dp[i] : 숫자i번 쓰고 만들 수 있는 수 모음이어붙이는 숫자(예: 5, 55, 555)도 고려해야 했습니다.사칙연산(+, -, *, /)을 통해 조합할 수 있는 모든 경우를 생성했습니다.숫자 사용 횟수를 1개부터 8개까지 늘려가면서 원하는 수가 만들어지는지 ..
[프로그래머스] 타겟넘버 문제 풀이 (BFS)
·
Algorithm
문제 소개오늘 풀었던 프로그래머스 타겟 넘버 문제를 정리합니다. 오랜만에 다시 알고리즘 풀이를 시작했습니다. 다시 매일 화이팅~!주어진 숫자 배열에서 각 숫자에 + 또는 -를 붙여서 원하는 타겟 넘버를 만들 수 있는 경우의 수를 구하는 문제입니다.문제 링크: 타겟 넘버 - 프로그래머스문제 접근 방식이 문제는 다음과 같은 방식으로 접근했습니다:이 문제는 모든 경우의 수를 탐색해야 하므로 완전 탐색(Brute Force) 방식이 적절합니다.각 숫자에 + 또는 -를 붙이는 모든 조합을 탐색해야 하므로, DFS(백트래킹) 또는 BFS를 활용할 수 있습니다.해결 과정 및 코드핵심 아이디어각 숫자에 대해 +와 -를 적용한 경우를 탐색탐색이 끝났을 때 목표 값(target)과 동일한 경우 answer 증가코드시간 복..
[백준] 15684 - 사다리 조작 문제 풀이 (백트래킹)
·
Algorithm
문제 소개오늘 풀었던 백준 15684번 - 사다리 조작 문제를 정리합니다.이 문제는 사다리를 조작하여 특정 조건을 만족시키는지 확인해야 하는 백트래킹 유형의 문제입니다.문제의 핵심은 "추가할 수 있는 사다리의 개수 제한(3개)"과 "조건을 만족하는 최소 사다리 개수"를 찾는 데 있었습니다.문제 링크: 사다리 조작 - 백준 15684번문제 접근 방식이 문제는 다음과 같은 방식으로 접근했습니다:백트래킹을 이용하여 사다리를 추가하면서 조건을 만족하는지 확인.조건을 만족하는 최소 사다리 개수를 찾되, 3개를 초과할 경우 -1을 반환.사다리의 유효성을 확인하는 함수를 구현하여 모든 사다리가 제대로 연결되었는지 확인.해결 과정 및 코드핵심 아이디어사다리를 최대 3개까지 추가할 수 있으므로, 추가 개수를 제한하여 D..