본문 바로가기

프로그래머스62

프로세스 (C#) 📌프로그래머스 42587💡풀이제거 삽입을 위해 List ints를 선언while문으로 원하는 location의 프로세스가 실행 될 때 까지 반복.bool 변수 canProcess를 true로 선언가장 앞에있는 ints[0]을 임시 정수 temp 에 담아놓고 ints[0]을 삭제foreach문으로 ints 안에 남아있는 값들 중 temp 보다 큰 값이 있으면 temp를 ints 가장 뒤에 넣고(Add) canProcess = false만약 canProcess == true 즉, 실행 가능하면 answer + 1 하고 location이 0이면(찾는 프로세스면) while문 종료실행이 되건 안 되건 location을 -1 하여 순서를 앞으로 당김. 만약 0보다 작으면 가장 뒤인 ints.Count - 1p.. 2024. 6. 10.
기능개발 (C#) 📌프로그래머스 42586💡풀이개발 완료에 걸리는 일자를 구한 정수 배열 int[] days를 만듦.정수 배열을 Queue로 이식.순서에 맞게 완료 시기마다 한 번에 배포될 수를 담을 List를 선언.Queue에 담겨있는 int가 있는동안 while문으로 먼저 배포가 되어야 할 기능의 개발일을 꺼내고(Dequeue) count + 1이중 while문으로 다음 기능의 개발일을 확인 후 아직 개발완료가 아니면 break, 개발완료 되었으면 현재 기능과 같이 배포가 가능하므로 Dequeue 및 count + 1while문 한 번 돌 때 마다 count를 List에 Addpublic int[] 기능개발(int[] progresses, int[] speeds){ int[] days = new int[pro.. 2024. 6. 9.
의상 (C#) 📌프로그래머스 12949💡풀이Dictionary를 사용해 각 의상 종류에 맞는 옷의 개수를 저장의상을 착용하는 조합을 구하기 위해 각 종류의 의상 수를 곱함(해당 종류의 의상을 안 입는 경우 포함하여 +1) 의상을 안 입는다는 경우는 없으니 answer - 1public int 의상(string[,] clothes){ int answer = 1; Dictionary dict = new Dictionary(); for(int i = 0; i 2024. 6. 8.
행렬의 곱셈 (C#) 📌프로그래머스 12949💡풀이행렬 곱셈의 조건인 행렬 arr1의 행과 arr2의 열 개수가 같아야 한다. 즉 곱으로 나올 행렬은 int[arr1.GetLength(0), arr2.GetLength(1)] 이다.제한조건에서 곱할 수 있는 배열만 주어진다고 했으니 따로 if문으로 검증할 필요는 없다.행렬 하나의 성분을 구하기 위해 arr1의 열의 개수만큼 반복해야하고 또한 전체 행렬을 돌기위해 2중 반복문이 필요해 총 3중 for문으로 해결한다.public int[,] 행렬의곱셈(int[,] arr1, int[,] arr2){ int row = arr1.GetLength(0); int col = arr2.GetLength(1); int[,] answer = new int[row, col].. 2024. 6. 7.
H-Index (C#) 📌프로그래머스 42747💡풀이citations를 역순으로 정렬한다.인용수가 큰 순서대로 나열됐으니 0 ~ citations.Length - 1 까지 검사한다.citations[i]의 원소 크기(인용수)가 i + 1(논문 수) 와 같거나 크기만 하다면 h번 이상 h편 인용됐다는 조건에 맞다.해당 조건이 맞다면 int answer를 하나씩 더해주면 된다.조건이 안 맞으면 이후로는 인용수가 편수에 못미치니 바로 끝내도 된다.public int HIndex(int[] citations){ int answer = 0; Array.Sort(citations); Array.Reverse(citations); for (int i = 0; i = i + 1) a.. 2024. 6. 6.
할인 행사 (C#) 📌프로그래머스 131127💡풀이시작일부터 10일 연속이므로 최대 시작일을 지정 후 for문 시작number와 일치하는지 확인할 새로운 정수배열을 for문 내부에 생성want와 discount를 전부 조사하며 discount[i] == want[j] 일 때, 새로운 정수배열의 j를 1증가조사가 끝나면 새로운 정수배열과 number의 각 원소를 비교, 일치하면 answer 1증가public int 할인행사(string[] want, int[] number, string[] discount){ int answer = 0; // 시작일 부터 10일 연속이니 최대 시작일을 day  discount의 길이가 길수도 있다는걸 생각하면 3중 for문은 (그걸 떠.. 2024. 6. 5.
n^2 배열 자르기 (C#) 📌프로그래머스 87390💡풀이정수 List를 만든다.for문으로 주어진 left ~ right 까지만 조건을 걸어 반복한다.각 길이가 n인 행렬의 x, y 좌표를 구한다고 생각한다.x 좌표는 i / n, y 좌표는 i % n. 둘 중 더 큰 값을 넣는다.해당 좌표에 들어가있는 값은 (x or y) + 1이다.public int[] n2제곱배열자르기(int n, long left, long right){ List list = new List(); // 2차원 배열이라고 생각하고 x, y 좌표를 찾는다. // 해당 좌표의 x, y 값 중 더 큰 값을 추가. for(long i = left; i y ? x + 1 : y + 1; list.Add(va.. 2024. 6. 4.
주사위 게임 2 (C#) 📌프로그래머스 181930💡풀이가장 단순하면서 가장 직관적인 if 조건으로만 구분한다.if 1. 세 주사위가 모두 같은 수일 때 returnif 2. 두 주사위가 같은 수일 때 return3. 이도저도 아니면 다 다른 수이니 returnif의 순서가 바뀌면 안 된다.public int 주사위게임2(int a, int b, int c){ if (a == b && b == c && a == c) return (a + b + c) * (a * a + b * b + c * c) * (a * a * a + b * b * b + c * c * c); if (a == b || a == c || b == c) return (a + b + c) * (a * a + b * b + c.. 2024. 6. 3.
수 조작하기 2 (C#) 📌프로그래머스 181925💡풀이for문을 1부터 numLog.Length - 1 까지 돈다.i와 i - 1의 차이로 switch문을 통해 해당 수에 따라 문자를 삽입한다.public string 수조작하기2(int[] numLog){ StringBuilder sb = new StringBuilder(); for(int i = 1; i 2024. 6. 3.