728x90
반응형

전체 글 214

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

힌트 더보기 - 절대값을 기준으로 정렬한 후 동일한 값이 존재한다면 더 큰 수를 앞으로 이동시킨다 - 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

[프로그래머스 힌트/답/해석] 로그인 성공?

힌트 더보기 - db 배열 내에 로그인 시도하는 문자열이 존재 및 일치하면 로그인 상태를 리턴한다 - id가 존재하지 않으면 fail, password가 틀리면 wrong pw를 리턴한다 정답 더보기 public static string Solution65(string[] id_pw, string[,] db) { LoginStatus loginStatus = LoginStatus.fail; for(int i=0; i< db.Length / db.GetLength(1); i++){ if(id_pw[0] == db[i,0]){ if(id_pw[1]== db[i,1]) loginStatus = LoginStatus.login; else loginStatus = LoginStatus.wrong_pw; break..

C# 2024.01.30

[프로그래머스 힌트/답/해석] 캐릭터의 좌표

힌트 더보기 - right = [1,0] , left[-1,0], up = [0,1], down[0,-1] - 플레이어의 위치가 board의 범위에 초과하면 더이상 계산하지 않는다 -board의 범위는 각각 /2를 해주면 된다(board의 범위는 홀수이다) 예시) board[7,5] 는 x축으로 -3~+3, y축으로 -2~+2 정답 더보기 public static int[] Solution63(string[] keyInput, int[] board) { var boardRange = board.Select(x=> x/2); int[] playerPos2D = new int[2]; foreach(var key in keyInput){ int[] keyValue = MovePosition(key); play..

C# 2024.01.30

[프로그래머스 힌트/답/해석] 컨트롤 제트

힌트 더보기 - 문자열들의 값들을 int 화 하여 더해주다가 다음 문자가 'Z'면 이전 값을 뺴준다 - 다음 문자가 'Z'가 아닐 때만 각 문자를 int화하여 더해준다 - 문자열 s에서 'Z'와 그 이전 숫자 문자를 제거하여 모두 더해준다 예시) "1256Z235" -> "125235" 한 후 합산 정답 더보기 var arr = s.Split(" ").ToList(); while(arr.Contains("Z")) { arr.RemoveRange(arr.IndexOf("Z")-1, 2); } return arr.Sum(x=> Convert.ToInt32(x)); 해석 더보기 var arr = s.Split(" ").ToList(); 문자열 s를 " " 공백을 기준으로 나누어 리스트화하여 저장한다 while..

C# 2024.01.30

[프로그래머스 힌트/답/해석] 외계어 사전

힌트 더보기 - Spell에 담긴 문자들을 모두 사용한 문자열이 존재하는지 찾는 것이다. - spell ["a", "b", "c"] dic ["bcd","abdf", "cda", "aabc" ,"bca"]라면 bcd = false, abdf = false, cda = false, aabc = false, bca = true이므로 1을 리턴해준다 정답 더보기 방법 1 var arr = dic.Select(x => spell.Count(y => x.Contains(y) && x.Count(z => y== z.ToString())==1)); return arr.Count(x=> x==spell.Length)>0 ? 1 : 2; 방법 2 int existCount; foreach(var d in dic){ ex..

C# 2024.01.30
728x90
반응형