본문 바로가기

전체 글90

프로그래머스 - 스티커 모으기 (DP , 점화식) 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이번 문제는 처음 보는 유형의 문제로, 검색 엔진으로 풀이 방식을 찾아서 해법을 찾아야 했다.처음 보는 유형의 문제였고, 검색을 통해 확인한 결과 DP를 사용하여, 점화식을 세워서 푸는 문제이다. public int solution(int[] sticker){ int n = sticker.Length; if (n == 1) return sticker[0]; // 1. 첫 번째 스티커 선택 int[] dp1 = new int[n]; dp1[0] = sticker[0]; dp1[1] = Math.Max(sticker[0], stic.. 2025. 9. 17.
프로그래머스 - 숫자 게임 (SortedDictionary + SortedSet) 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이번 문제는 최소한의 차이로 반대편의 숫자보다 큰 값을 많이 제시해야하는 문제이다. 예시로 [5,1,3,7] 이 있다면 [2,2,6,8] 의 패를 가지고 효율적으로 최대한 많이 이기려면1에 2로 승리3에 2로 패배5에 6으로 승리7에 8로 승리의 방식이 존재한다 이떄 각 원소의 값과 길이가 상당이 크기 때문에 시간 누적도를 신경쓰며 풀어야 하는 문제이다. 처음에는 dictionary를 써서 아래와 같이 풀어보았다 public int solution(int[] A, int[] B){ int answer = 0; Dictionary dictA .. 2025. 9. 16.
프로그래머스 - 베스트 앨범 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이번 문제는 노래의 인기순서 나열을 특정 조건하에 진행하는 문제이다.이곳에서 중요한 조건은 기본적인 기준 1,2,3 를 지켜가며 중복되는 장르는 최대 2개까지만 넣을수 있는 제한이 있다는 점이다. 따라서 중복장르 2개 제한을 Dictionary 의 형식으로 (장르 이름 , 2) value 값을 체크를 통해 중복관리,이후 정렬 기준을 3>2>1 순서대로 분류를 진행하여 우선순위에 맞춘 값을 도출했다. public int[] solution(string[] genres, int[] plays){ int[] answer = new int[] { }; .. 2025. 9. 12.
프로그래머스 - 이중우선순위큐 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 이번 문제는 우선순위큐의 문제로 Queue의 사용법과 간단한 string 활용법을 묻는 질문이다. Queue는 선입선출의 형식으로 Pop 와 Peak등을 통해서 순서를 유지하며 조정하는 경우 List 보다 가벼운 계산 속도를 보여주기에 특정상황에서 쓰인다.이번 문제는 중간중간 들어오는 값을 순서에 맞춰서 배열해주면 되는 방식으로단순히 for문이나 List를 쓰게된다면 중복해서 확인해야하는 이중 for문 구조로 밖에 풀리지 않아서 Queue를 활용해야했다. 아래는 실제 풀이이다.public int[] solution(string[] operations){ .. 2025. 9. 12.
프로그래머스 - 방문 길이 지문 + 예시 설명이 조금 긴 문제이다. -5~5 크기의 2차원 공간에서 string 값으로 방향을 받고 이동할때, 처음 걸어본 길의 횟수를 구하는 문제로, 1. -5~5 구간을 벗어나려는 이동은 제한한다 라는 조건만 인지한다면 전혀 어려운 문제가 아니라고 생각한다. 이번 문제의 처음 걸어본 길 == 겹치지 않는 경우의 경우, 일반적인 접근법인 Hashset이 존재하고, 이때 Hashset을 튜플로 사용한다면 다양한 값을 하나의 그룹으로 저장할 수 있는 점을 사용하여 문제를 풀어 보았다. Hashset에는 이동할 좌표 + 해당좌표로 이동할 때의 행동 으로 저장하였다. => visited.Add(new Tuple(current.Item1, current.Item2, "U")) public i.. 2025. 8. 22.
프로그래머스 - 영어 끝말잇기 간단한 끝말 잇기의 규칙 문제이다. 해당 문제를 간단하게 풀기 위해서 알아야 하는 내용은 아래의 두가지가 전부다 1. 중복 체크를 위한 HashSet 사용.2. string은 char의 배열 형식으로 되어 있어서 string[n] 형식으로 사용 가능하다. 아래는 위 두가지 사항을 지켜서 간단한 for 문과 if else 로 문제를 푼 결과다. public int[] solution(int n, string[] words){ int[] answer = {0, 0}; HashSet usedWords = new HashSet(); int num = 0; int count = 0; for (int i = 0; i 0 && words[i][0] != words[i - 1][w.. 2025. 8. 20.