본문 바로가기
728x90
반응형

CodeSignal66

arrayMaximalAdjacentDifference 주어진 정수 배열에서 인접한 두 요소 간의 최대 절대 차이를 찾는 문제입니다. 즉, 배열에서 연이은 두 요소를 선택하여 그 차이의 절대값이 최대가 되는 경우를 찾아야 합니다. int solution(int[] inputArray) { int max = 0; for(int i = 1;i max){ max = Math.Abs(inputArray[i-1]-inputArray[i]); } if(Math.Abs(inputArray[i+1]-inputArray[i]) > max){ max = Math.Abs(inputArray[i+1]-inputArray[i]); } } return max; } max 변수를 초기화합니다. 이 변수는 현재까지 찾은 최대 절대 차이를 저장합니다. 배열을 인덱스 1부터 시작하여 끝에서.. 2023. 12. 11.
isIPv4Address 주어진 문자열이 IPv4 주소의 규칙을 따르는지 확인하는 문제입니다. IPv4 주소는 다음과 같은 규칙을 갖습니다: 0부터 255 사이의 숫자로 구성된 4개의 숫자 그룹으로 이루어져야 합니다. 숫자와 숫자 사이에는 마침표(".")가 있어야 합니다. 각 숫자는 0으로 시작하지 않아야 합니다. 주어진 예시와 규칙을 고려하여 주어진 문자열이 IPv4 주소의 조건을 만족하는지 확인하는 함수를 작성해야 합니다. bool solution(string inputString) { string[] inputArr = inputString.Split("."); if(inputArr.Length != 4) return false; for(int i = 0;i 255) return false; if(outVal < 10 &&.. 2023. 12. 10.
areEquallyStrong 두 사람의 팔 강도가 주어졌을 때, 두 사람이 팔의 힘이 서로 같은지를 판단하는 문제입니다. 여기서 "힘이 같다"는 것은 두 사람 중 하나의 최대 힘이 다른 사람의 최대 힘과 같고, 최소 힘이 다른 사람의 최소 힘과 같다는 것을 의미합니다. bool solution(int yourLeft, int yourRight, int friendsLeft, int friendsRight) { int yourMax = Math.Max(yourLeft,yourRight); int yourMin = Math.Min(yourLeft,yourRight); int friendsMax = Math.Max(friendsLeft,friendsRight); int friendsMin = Math.Min(friendsLeft,frie.. 2023. 12. 10.
palindromeRearranging 주어진 문자열을 재배열하여 팰린드롬을 형성할 수 있는지 확인하는 문제입니다. 예를 들어, "aabb" 문자열은 "abba"로 재배열하여 팰린드롬을 형성할 수 있습니다. 따라서 이 경우에는 함수가 true를 반환해야 합니다. 팰린드롬은 앞으로 읽어도 뒤로 읽어도 동일한 문자열을 말합니다. 문제에서는 문자열을 재배열하여 팰린드롬을 만들 수 있는지를 확인하라고 명시하고 있습니다. bool solution(string inputString) { Dictionary dic = new Dictionary(); foreach(char c in inputString){ if(dic.ContainsKey(c)){ dic[c]++; } else dic[c] = 1; } int oddCount = 0; foreach(var.. 2023. 12. 10.
arrayChange 주어진 배열에서 각 요소를 증가시켜서(strictly increasing sequence) 증가 수열을 만들기 위해 필요한 최소 이동 횟수를 찾는 문제입니다. 여기서 "strictly increasing sequence"는 배열의 모든 요소가 바로 앞의 요소보다 크다는 것을 의미합니다. 예를 들어, 배열이 [1, 1, 3, 2]인 경우, 이 배열을 증가 수열로 만들기 위해 다음과 같이 이동할 수 있습니다: 두 번째 요소를 2로 증가: [1, 2, 3, 2] 네 번째 요소를 3으로 증가: [1, 2, 3, 3] 결과적으로 [1, 2, 3, 3]은 증가 수열이 됩니다. 최소 이동 횟수는 2입니다. 이 문제의 목표는 최소 이동 횟수를 찾아내는 것입니다. int solution(int[] inputArray) .. 2023. 12. 9.
Are Similar? 두 개의 배열 a와 b가 주어졌을 때, 두 배열이 서로 교환을 통해 동일하게 만들 수 있는지 여부를 판단하는 것입니다. 여기서 "교환"이라 함은 두 배열에서 하나의 원소 쌍을 선택하고 위치를 바꾸는 것을 의미합니다. 두 배열이 유사하려면 다음의 세 가지 조건 중 하나가 성립해야 합니다: 두 배열이 동일한 경우. 두 배열에서 위치가 다른 두 원소를 하나씩 선택하여 위치를 바꿀 경우, 그 결과 두 배열이 동일해야 함. 따라서 두 배열이 유사한지 확인하기 위해서는 다음과 같은 절차를 따릅니다: bool solution(int[] a, int[] b) { if(a.SequenceEqual(b)) return true; List diffIdx = new List(); for(int i = 0;i 2023. 12. 6.
Add Border 문자로 이루어진 직사각형 행렬이 주어지면, 이 행렬 주위에 별표(*) 테두리를 추가하는 문제입니다. picture = ["abc", "ded"] 이라면, 출력은 다음과 같아야 합니다: ["*****", "*abc*", "*ded*", "*****"] 여기서 첫 번째 행과 마지막 행에는 모든 열에 *가 포함되고, 나머지 행은 맨 앞과 맨 뒤에 *가 붙은 형태로 테두리가 형성됩니다. 즉, 주어진 행렬의 각 행의 앞과 뒤에 *를 추가하여 새로운 행렬을 생성하면 됩니다. string[] solution(string[] picture) { char[] ch = picture[0].ToCharArray(); int len = ch.Length; char[] border = new char[len+2]; string.. 2023. 12. 5.
728x90
반응형