본문 바로가기

알고리즘 문제풀이259

[프로그래머스] 디스크 컨트롤러 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/42627?language=java 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 시뮬레이션 작업번호 = 인덱스, 요청시간, 소요시간 을 가진 작업들이 N개 주어지고이를 소요시간 짧은순, 요청시간 이른 순, 작업 번호 작은순으로 실행하여각 작업 마다 완료 시각 - 요청시각을 뺀 값을 구해서 평균을 반환하는 문제 접근방법1. 요청시간이 이른 순으로 작업들을 정렬한다.2. 문제의 우선순위를 반영한 우선순위큐를 선언한다.3. 요청시간이 이른 순으로 정렬된 작업들을 앞에서 부터 보면서 현재 시각 t와 요청시각이 일치.. 2025. 6. 26.
[프로그래머스] 여행 경로 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/43164?language=java 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문자열, DFS 출발지와 도착지가 나와있는 비행기 티켓이 N개 주어지고, 이 티켓을 모두 써서 갈 수 있는 경로를 구하는 문제경로가 여러개라면, 사전순을 먼저 방문하는 경로로 접근 방법 1. 출발지를 key로, 출발지에서 갈 수 있는 도착지들을 value로 갖는 인접리스트를 만든다. (HashMap사용)2. 인접리스트에 모든 티켓을 반영한 후에, value들만 사전순으로 정렬한다.3. ICN을 시작으로 DFS DFS 재귀함수-.. 2025. 6. 25.
[프로그래머스] 파일명 정렬 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/17686?language=java 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문자열, 정렬아래와 같은 파일명을"문자열로만 이루어져있는 접두어 부분 = HEAD","그 다음 숫자로 이루어진 부분 = NUMBER","그 다음 글자 부터 끝까지 = TAIL"로 구분할 때, foo9.txtfoo9.txtfoo010bar020.zipfoo010bar020.zipF-15F-15(빈 문자열) 정렬 기준1. HEAD를 기준으로 알파벳, 길이 순으로 정렬 (Java String CompareTo() 활용)2. 1기준이 .. 2025. 6. 23.
[프로그래머스] 단어 변환 (Java) BFSbegin 단어를 target 단어로 만들기 위해 words에 있는 단어들로 변환해 가려고 한다. 근데 단어는 한글자만 바꿀 수 있을 때 최소 몇번 바꿔서 target단어를 만들 수 있는지 구하는 문제 접근 방법큐에 begin부터 넣고, words에 있는 문자열 중, 아직 방문하지 않았고, 한글자만 차이나는 글자를 큐에 지금까지의 변환 횟수 +1과 함께 넣는다. 방문 체크 이때 방문여부를 체크하기 때문에 아직 지금의 문자열이 지나온 경로에서 방문하진 않았지만, 이미 방문 체크가 되어있는 단어는 방문하지 못한다는 것 때문에 헷갈렸는데 예를 들어, hot -> dot, lot이 될 수 있고, 이때 이미 이 3개 단어는 방문으로 체크됨.-> dot은 lot이랑도 한글자 차이지만 lot으로 바꾸는 경우는.. 2025. 6. 20.
[프로그래머스] 모음사전 (Java) https://school.programmers.co.kr/learn/courses/30/lessons/84512?language=java 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr DFSA,E,I,O,U로만 이루어진 1~5글자가 알파벳 순서로 정렬 되어 있을 때,주어진 한 문자의 순서를 출력하는 문제 접근 방법원래 C++로 풀었을 때는 찾고있는 문자가 나오면 멈췄는데이번에는 그냥 가능한 모든 문자(A,E,I,O,U로 이루어진 1~5자리 글자)를 배열에 넣고자바 API에 있는 indexOf(value:)로 찾았음 백만년만에 자바로 문제푸니까 까먹은거 투성이 소스코드Array, ArrayList 선언하는 방법.. 2025. 6. 19.
[프로그래머스] 전력망을 둘로 나누기 (Swift) https://school.programmers.co.kr/learn/courses/30/lessons/86971?language=swift DFS, 그래프트리 모양의 그래프에서 간선을 하나 끊고 두 서브트리로 나눌 때,이 두 서브트리의 노드 수의 차의 최솟값을 구하는 문제 접근방법1. 양방향 그래프의 인접리스트를 생성 (서브트리 탐색 위함)2. 모든 전선을 하나씩 끊어가면서, 각 경우에 대해 두 서브 트리의 노드 개수 차이 최솟값 갱신2-1. 끊는 전선에 연결되어 있는 노드를 루트노드로 한 두 서브트리 중 하나의 서브트리 노드 개수 구하는 함수 선언 (getChildCnt - dfs) - visit 배열을 inout으로 사용- childCnt를 구하는 과정에서 초기값을 1로 해주어야 본인(서브트리의 루.. 2025. 6. 16.
[프로그래머스] 멀리 뛰기 (Swift) https://school.programmers.co.kr/learn/courses/30/lessons/12914 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 한 친구가 일직선 상의 선에서 한 칸씩 혹은 두 칸씩 나아갈 수 있는데, 마지막 칸에 도달할 수 있는 경우의 수를 구하는 문제였다.단, 1234567로 나눈 나머지 값을 구하는 문제 (이렇게 나눈 나머지 값을 구하는 문제의 경우, 마지막 결과 뿐만 아니라 그 전에 결과를 더할때 부터 1234567으로 나눈 값을 적용해주어야 한다. 중간에 Int 범위를 넘어갈 수 있기 때문) 접근 방법 0칸부터 시작해서 n칸까지 가는데,i칸에서 i+1칸에 갈 수 있는 경.. 2025. 6. 2.
[프로그래머스] 무인도 여행 (Swift) https://school.programmers.co.kr/learn/courses/30/lessons/154540?language=swift 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr N*M크기의 격자판이 있다고 합시다 (지도를 의미).- 각 칸에는 X (바다) 혹은 1~9사이의 자연수( 각 칸의 무인도에 있는 식량 수)가 적혀져 있음.- 상하좌우로 연결되어 있는 칸끼리는 하나의 무인도임.- 하나의 무인도 땅에 있는 식량의 합은 그 무인도에 머물 수 있는 기간(일)을 의미- 지도에 0개 이상의 무인도가 있을 때, 각 무인도에 머물 수 있는 기간을 오름차순 배열로 출력하는 문제 접근방법1. N*M 지도를 순.. 2025. 6. 2.
[프로그래머스] 주사위 고르기 (Swift) https://school.programmers.co.kr/learn/courses/30/lessons/258709?language=swift 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr A와 B라는 친구들이 있습니다. 그들의 앞에는 N개의 주사위가 있고요. 이걸 딱 반띵해서 가져갈겁니다.주사위는 평범하게 정육면체인데, 그 안에 적혀 있는 숫자는 1~100으로 랜덤입니다. 중복도 있구요.자, A와 B는 본인들이 가져간 주사위를 한번씩 다 굴려서 나온 값을 더할거에요. 그 값으로 누가 더 큰 수가 나왔나~ 겨루는 겁니다.이때, A가 이길 확률이 가장 높게 하려면, 어떤 주사위를 골라 가져가야 하는지 구하는 문.. 2025. 6. 1.
728x90