반응형

 

 

 

 

 

풀이 코드

using System;

public class Solution {
    public int[] solution(string s) {
        int zeroCount = 0;
        int loopCount = 0;
        while(s != "1")
        {
            string replaceStr = s.Replace("0", string.Empty);
            int lengthDiff = s.Length - replaceStr.Length;
            zeroCount += lengthDiff;
            loopCount++;
            s = Convert.ToString(replaceStr.Length, 2);
        }
        
        int[] answer = new int[] {loopCount, zeroCount};
        return answer;
    }
}
  • string.Replace()를 사용해서 0값을 지워준다.
  • 지운 문자열(replaceStr) 길이와 인수로 들어온 문자열(s)의 길이를 빼서 그 값을 전부 더해준다.
  • 다음 루프에서 이 과정을 다시 처리하기 위해 s값을 replaceStr 문자열 길이를 2진수로 변환한 문자열로 변경해준다.
  • 위 과정을 s가 "1"이 될때까지 반복 후, 결과를 출력한다.

 

 

 

 

기타

- Convert.ToString() : 첫번째 인수에 변환할 값을, 두번째 인수에 몇진수로 변환할건지 값을 입력하면 변환된 값을 문자열로 받을 수 있다.

 

 

 

 

 

반응형

'Stack > Coding test' 카테고리의 다른 글

[C# / Lv3] 이중우선순위큐  (0) 2022.10.10
[C# / Lv2] 올바른 괄호  (0) 2022.10.07
[C# / Lv2] 최솟값 만들기  (0) 2022.10.07
[C# / Lv2] JadenCase 문자열 만들기  (0) 2022.10.07
[C# / Lv2] 최댓값과 최솟값  (0) 2022.10.07
반응형

 

 

 

 

 

풀이코드

using System;

public class Solution {
    public int solution(int[] A, int[] B) {
        Array.Sort(A);
        Array.Sort(B, (a, b) => b.CompareTo(a));
        
        int answer = 0;
        for(int i = 0; i < A.Length; i++)
        {
            answer += A[i] * B[i];
        }
        
        return answer;
    }
}
  • 핵심 요지는 배열 A의 최소값과 배열 B의 최대값을 곱해주면 최종적으로 최소값이 나온다.
  • 그렇기 때문에, 배열 A는 오름차순, 배열 B는 내림차순으로 정렬한뒤 각 배열의 i번째 값들을 순서대로 곱해준 뒤, 더한값을 결과로 출력한다.

 

 

 

 

 

반응형

'Stack > Coding test' 카테고리의 다른 글

[C# / Lv2] 올바른 괄호  (0) 2022.10.07
[C# / Lv2] 이진 변환 반복하기  (0) 2022.10.07
[C# / Lv2] JadenCase 문자열 만들기  (0) 2022.10.07
[C# / Lv2] 최댓값과 최솟값  (0) 2022.10.07
[C++ / Lv2] 더 맵게  (0) 2022.03.03
반응형

 

 

 

 

 

풀이코드

public class Solution {
    public string solution(string s) {
        char[] charArr = s.ToLower().ToCharArray();
        charArr[0] = char.ToUpper(charArr[0]);
        for(int i = 1; i < charArr.Length; i++)
        {
            if(charArr[i - 1] == ' ')
            {
                charArr[i] = char.ToUpper(charArr[i]);
            }
        }
        string answer = string.Join(string.Empty, charArr);
        return answer;
    }
}
  • 문자열을 모두 소문자로 변경한뒤 Char 배열로 변환한다.
  • 첫번째 Char값의 경우, 반복문에서 따로 체크를 안하기때문에 반복문 전에 첫번째 Char값을 대문자 변환을 시도한다. (어차피 숫자는 ToUpper(), ToLower()로 값이 변경되지 않으므로 굳이 조건문을 추가하지 않는다.)
  • 나머지 값들에 대해 반복문을 돌리면서 단어 앞에 공백이 있으면 해당 i번째 Char 값을 대문자로 변경한다.

 

 

 

기타

- string.Join() : 배열을 string으로 묶는 기능

 

String.Join 메서드 (System)

각 요소 또는 멤버 사이에 지정된 구분 기호를 사용하여 지정된 배열 요소나 컬렉션 멤버를 연결합니다.

learn.microsoft.com

 

 

 

 

 

 

반응형

'Stack > Coding test' 카테고리의 다른 글

[C# / Lv2] 이진 변환 반복하기  (0) 2022.10.07
[C# / Lv2] 최솟값 만들기  (0) 2022.10.07
[C# / Lv2] 최댓값과 최솟값  (0) 2022.10.07
[C++ / Lv2] 더 맵게  (0) 2022.03.03
[C# / Lv2] 주식 가격  (0) 2022.02.26
반응형

 

 

 

 

풀이코드

using System;

public class Solution {
    public string solution(string s) {
        int[] intArr = Array.ConvertAll(s.Split(" "), item => int.Parse(item));
        Array.Sort(intArr);
        string answer = $"{intArr[0]} {intArr[intArr.Length - 1]}";
        return answer;
    }
}
  • 문자열 안의 숫자들이 공백을 기준으로 나뉘어져 있으므로 Split으로 나눠준 뒤, int로 파싱한다.
  • 그렇게 만들어진 배열을 정렬한 뒤, 첫번째 값과 마지막 값을 출력해주면 끝

 

 

 

 

 

반응형

'Stack > Coding test' 카테고리의 다른 글

[C# / Lv2] 최솟값 만들기  (0) 2022.10.07
[C# / Lv2] JadenCase 문자열 만들기  (0) 2022.10.07
[C++ / Lv2] 더 맵게  (0) 2022.03.03
[C# / Lv2] 주식 가격  (0) 2022.02.26
[C++ / Lv 2] 다리를 지나는 트럭  (0) 2022.02.26
반응형

 

 

 

 

이전에 C로 퀵정렬을 구현한 글을 썼었는데, 육안으로 과정이 보이는 글이 아닌 코드만 작성되어있는 글이어서 유니티 C#으로 퀵 정렬 과정을 육안으로 확인할 수 있도록 제작해봤다.

만들면서 파티션 정렬하는 과정에서 high index가 파티션 배열의 범위를 벗어나는 버그가 있었는데, 단순히 조건문 순서상의 오류라 바로 수정했다. (생각보다 그 글이 조회수가 좀 됐는데, 글을 보신 분들이 문제 제기를 안했다는게 의아함)

 

 

 

 

1. 유니티 C# 퀵정렬 프로젝트

- 코드가 아닌 유니티 프로젝트로 올립니다. (깃허브)

 

GitHub - realnity09/QuickSort_CS

Contribute to realnity09/QuickSort_CS development by creating an account on GitHub.

github.com

 

 

 

 

2. QuickSort 컴포넌트 설명

- TargetArrSize : 배열의 길이를 지정할 수 있다.

- Min, Max : 배열 요소의 최소값과 최대값. (지정한 범위 안에서 랜덤 함수로 지정된다.)

- Delay : 정렬하는 속도 (값이 높을수록 느려집니다. WaitForSeconds값.)

※ Scene에 버튼 2개가 붙어있는데, Create arr 버튼으로 배열을 생성하고, Quick sort 버튼을 누르면 정렬이 시작되며 정렬 과정을 눈으로 확인할 수 있습니다.

low index - Red, high index - Blue, pivot index - cyan

※ 정렬이 완료되면 UI element가 초록색으로 변합니다.

 

 

 

3. 퀵정렬 설명

 

퀵정렬(Quick Sort) 구현

퀵정렬(Quick Sort) - 찰스 앤터니 리처드 호어가 개발한 알고리즘이다. - 평균 O(n log n)으로 매우 빠른 정렬속도를 자랑한다. - 기준(Pivot) 값을 기준으로 나머지 원소에 대해 대소관계를 비교하여 큰

srdeveloper.tistory.com

 

 

 

 

 

 

반응형

'Stack > Algorithm' 카테고리의 다른 글

문자열, 숫자 뒤집기  (0) 2021.10.16
퀵정렬(Quick Sort) 구현  (0) 2021.09.19
삽입정렬(Insertion Sort) 구현  (0) 2021.09.18
선택정렬(Selection Sort) 구현  (0) 2021.09.15
버블정렬(Bubble Sort) 구현  (0) 2021.09.14

+ Recent posts