본문 바로가기
728x90
반응형

CodeSignal66

growingPlant 식물의 성장과 하강에 대한 규칙이 주어졌을 때, 목표 높이에 도달하는 데 걸리는 날 수를 계산하는 문제입니다. 주어진 변수: upSpeed: 식물이 낮 동안 성장하는 높이. downSpeed: 식물이 밤 동안 감소하는 높이. desiredHeight: 도달하고자 하는 목표 높이. int solution(int upSpeed, int downSpeed, int desiredHeight) { int days = 0; int currentHeight = 0; while (currentHeight = desiredH.. 2023. 12. 24.
differentSymbolsNaive 주어진 문자열에서 서로 다른 문자의 개수를 찾는 것입니다. 주어진 문자열에서 서로 다른 문자의 개수를 찾는 것입니다. 문자열 "cabca"에서 서로 다른 문자는 'a', 'b', 'c'로 총 3개입니다. int solution(string s) { HashSet hash = new HashSet(); char[] ch = s.ToCharArray(); foreach(char c in ch){ if(!hash.Contains(c)){ hash.Add(c); } } return hash.Count(); } HashSet hash = new HashSet();: HashSet은 중복된 요소를 허용하지 않는 자료 구조입니다. 여기서는 문자(char)를 저장하는 HashSet을 생성합니다. char[] ch = .. 2023. 12. 22.
extractEachKth 정수 배열이 주어졌을 때, 배열에서 매 k번째 요소를 제거하는 것입니다. 예를 들어, 주어진 배열이 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]이고 k가 3이면, 3번째 요소와 그 다음에도 3의 배수에 해당하는 요소들을 제거한 새로운 배열을 반환해야 합니다. 예시로 주어진 입력에서는 [1, 2, 4, 5, 7, 8, 10]이 되어야 합니다. int[] solution(int[] inputArray, int k) { List li = inputArray.ToList(); int num = inputArray.Length/k; for(int i = num;i >= 1;i--){ li.RemoveAt(k*i-1); } return li.ToArray(); } inputArray를 List로 변환합.. 2023. 12. 19.
Circle of Numbers 0부터 n-1까지의 정수가 원 형태로 배치되어 있습니다. 이때 어떤 두 인접한 숫자 사이의 거리는 동일합니다. 그리고 문제에서는 어떤 숫자가 주어졌을 때, 그 숫자의 반대편에 위치한 숫자를 찾는 것입니다. 예를 들어, n이 4이고 firstNumber가 1이라면 숫자 0, 1, 2, 3이 원형으로 배치되어 있습니다. 0 1 3 2 여기서 1이 주어졌을 때, 이 숫자의 반대편에 위치한 숫자는 3입니다. 따라서 답은 3이 됩니다. 이를 일반화하면, 주어진 firstNumber의 반대편 숫자는 (firstNumber + n / 2) % n으로 계산할 수 있습니다. 이 공식은 firstNumber에서 n/2만큼 떨어진 위치에 있는 숫자를 나타냅니다. 예시에서는 (1 + 4 / 2) % 4로 계산되어 3이 됩니다.. 2023. 12. 18.
chessBoardCellColor 체스판에서 두 개의 셀(cell)이 주어질 때, 이 두 셀이 동일한 색인지 여부를 판단하는 문제입니다. 체스판은 8x8 격자로 이루어져 있으며, 각 셀은 열과 행의 조합으로 표현됩니다. 열은 알파벳으로 표현되며 A부터 H까지이고, 행은 숫자로 표현됩니다. 예를 들어, "A1"은 체스판의 왼쪽 아래 모퉁이에 위치한 셀을 나타냅니다. 문제에서는 주어진 두 셀 cell1과 cell2가 동일한 색인지 여부를 판단해야 합니다. 예를 들어, cell1 = "A1"이고 cell2 = "C3"이라면, 이 두 셀은 동일한 색이므로 결과는 true가 됩니다. 체스판에서 같은 대각선 상에 위치한 셀은 동일한 색을 가지게 됩니다. 이를 이용하여 두 셀이 동일한 색인지 여부를 판단할 수 있습니다. bool solution(st.. 2023. 12. 17.
stringsRearrangement 동일한 길이의 문자열로 이루어진 배열이 주어졌을 때, 연속하는 두 문자열 간에 정확히 한 문자만 차이 나도록 배열의 순서를 재배열할 수 있는지 여부를 판단하는 것입니다. 예를 들어, 문자열 배열이 ["abc", "xbc", "xxc"]라면, "abc"와 "xbc"는 한 문자만 다르며, "xbc"와 "xxc" 역시 한 문자만 다릅니다. 따라서 가능한 순서 재배열이므로 이 경우에는 true를 반환해야 합니다. bool solution(string[] inputArray) { return Permute(inputArray, 0); } bool Permute(string[] arr, int start) { if (start == arr.Length) { // 순열이 완성된 경우, 인접한 두 문자열이 조건을 만족.. 2023. 12. 17.
absoluteValuesSumMinimization 주어진 정렬된 정수 배열 a에서 다음의 식을 최소화하는 요소 x를 찾아야 합니다: abs(a[0]−x)+abs(a[1]−x)+…+abs(a[a.length−1]−x)abs(a[0]−x)+abs(a[1]−x)+…+abs(a[a.length−1]−x) 여기서 absabs는 절댓값을 나타냅니다. 이때, 여러 가능한 해가 있다면 가장 작은 값을 출력해야 합니다. 예를 들어, 배열 a가[2,4,7]이라면, 각 요소와의 거리의 합을 최소화하려면 x는 중간값인 4여야 합니다. 왜냐하면 abs(2−4)+abs(4−4)+abs(7−4)=2+0+3=5abs(2−4)+abs(4−4)+abs(7−4)=2+0+3=5로 가장 작은 값을 갖기 때문입니다. 이러한 문제를 해결하기 위해서는 다음과 같은 방법을 사용할 수 있습니다: 만.. 2023. 12. 16.
728x90
반응형