728x90
반응형

프로그래머스 30

[프로그래머스 힌트/답/해석] 안전지대

힌트 더보기 - 폭탄 1개에 최대 9개의 안전지대가 사라짐 - 1이 모서리에 위치한다면 4개만 사라짐 - 한쪽면에 맞닿아 있다면 6개만 사라짐 - 폭탄이 인접해 있다면 겹친 만큼 고려해야함 정답 더보기 public static int Solution75(int[,] board) { var safeArea = GetNewAreaData(board); int answer = 0; for(int i = 0 ; i < board.GetLength(0); i++) { for(int j = 0; j < board.GetLength(1); j++) { if(safeArea[i,j] != 1)answer++; } } return answer; } static int[,] GetNewAreaData(int[,] boar..

C# 2024.01.30

[프로그래머스 힌트/답/해석] 연속된 수의 합

힌트 더보기 - 3개의 연속된 숫자의 합이 12가 되려면 [3,4,5] 5개의 연속된 숫자의 합이 15가 되려면 [1,2,3,4,5] 4개의 연속된 숫자의 합이 14가 되려면 [2,3,4,5] 5개의 연속된 숫자의 합이 5가 되려면 [-1,0,1,2,3] - 규칙을 찾아보면 배열의 중간값은 합/연속된 숫자의 개수이다 [3, 4(12 / 3), 5] , [1, 2, 3(15 / 3), 4, 5] , [2,3(14 / 3), 4, 5], [-1, 0, 1(5 / 5), 2, 3] 홀수 개수라면 정중앙이 합/n이고, 짝수 개수면 중앙 왼쪽이다. 정답 더보기 방법 1 int[] answer = new int[num]; if(num%2==0){ for(int i = 0; i < num; i++){ answer[i..

C# 2024.01.30

[프로그래머스 힌트/답/해석] 다음에 올 숫자

힌트 더보기 - 등차수열은 두 번째 항과 첫 번째 항의 차와 세 번째 항과 두 번째 항의 차가 같다 - 등비수열은 두 번째 항과 첫 번째 항을 나눈 값이 세 번째 항과 두 번째 항을 나눈 값과 같다 정답 더보기 public static int Solution73(int[] common) { if(IsArithmeticSequence(common)){ return common[common.Length-1] + (common[1] - common[0]); }else if(IsGeometricSequence(common)){ return common[common.Length-1] * (common[1] / common[0]); }else{ throw new ArgumentException("Error"); }..

C# 2024.01.30

[프로그래머스 힌트/답/해석] 다항식 더하기

힌트 더보기 - x는 x끼리 합산, 상수는 상수끼리 합산 - x가 1이면 1x가 아닌 x를 리턴 - x가 0이면 상수값만, 상수가 0이면 x값만 리턴 정답 더보기 var polyArr = polynomial.Split(" "); var polyNum = polyArr .Where((x,i) => i % 2 == 0 && !int.TryParse(x, out int temp)) .Select(x => x.Length > 1 ? x.Remove(x.Length-1) : "1") .Sum(x => int.Parse(x)); var onlyNum = polyArr .Select(x => int.TryParse(x, out int temp) ? int.Parse(x) : 0) .Sum(); if(polyNum =..

C# 2024.01.30

[프로그래머스 힌트/답/해석] 특이한 정렬

힌트 더보기 - 절대값을 기준으로 정렬한 후 동일한 값이 존재한다면 더 큰 수를 앞으로 이동시킨다 - OrderBy는 오름차순 OrderByDescending은 내림차순 -TehnByDescending은 요소의 내림차순이다 정답 더보기 방법 1 return numlist.OrderBy(x=>Math.Abs(x-n)).ThenByDescending(x => x).ToArray(); 방법 2 var list = numlist.OrderBy(x=>Math.Abs(x-n)).ToArray(); int[] gaplist = new int[numlist.Length]; for(int i = 0; i < numlist.Length; i++){ numlist[i] = list[i]; gaplist[i] = Math.A..

C# 2024.01.30

[프로그래머스 힌트/답/해석] 문자열 밀기

힌트 더보기 - 문자열을 한 칸씩 밀었을 때 B가 나오면 문자열을 민 횟수를, 아니면 -1을 리턴한다 - 원하는 문자열을 더 붙였을 때 A와 일치하는 인덱스를 확인하면 민 횟수를 확인할 수 있다 예시) A "apple", B "pleap" B+B = "pleappleap" 정답 더보기 방법 1 int answer = (B+B).IndexOf(A); return answer; 방법 2 static int Solution70(string A, string B) { int answer = -1; for(int i = 0; i < B.Length; i++){ if(B.Equals(A)){ answer = i; break; } A = MoveToString(A); } return answer; } static s..

C# 2024.01.30

[프로그래머스 힌트/답/해석] 유한소수 판별하기

힌트 더보기 - 유한 소수는 분모를 최대 약분했을 때 2나 5만 존재해야한다 정답 더보기 방법 1 while(b % 2 == 0) b /= 2; while(b % 5 == 0) b /= 5; if(a%b!=0)return 2; return 1; 방법 2 while(b % 2 == 0) b /= 2; while(b % 5 == 0) b /= 5; if(a%b!=0)return 2; return 1; for(int i=(a > b ? b : a); i>= 2; i--){ if(a%i==0 && b%i==0){ a/=i; b/=i; break; } } if(b==1)return 1; var denomArr = Enumerable.Range(1,b).Where(x=> (b % x == 0 && x != 1 &&..

C# 2024.01.30

[프로그래머스 힌트/답/해석] 치킨 쿠폰

힌트 더보기 - 치킨 한마리당 쿠폰 1장이 발급되며 쿠폰으로 시켰을 경우에도 쿠폰을 준다 - 쿠폰 10장당 정답 더보기 int answer=0; while(chicken/10>=1){ answer += chicken / 10; chicken = (chicken/10) + chicken%10; } return answer; 해석 더보기 while(chicken/10>=1) chicken이 10으로 나누었을 때 1보다 크거나 같을 때 반복한다 answer += chicken / 10; 서비스 치킨 수에 주문한 치킨 수/10 값을 더해준다 chicken = (chicken/10) + chicken%10; 현재 남은 치킨 수는 치킨 수/10 + 치킨 수%10(10으로 나누었을 때의 나머지) 값을 더한 값이다

C# 2024.01.30
728x90
반응형