김김김의 게임개발
  • C# #20 알고리즘 코드카타 1
    2023년 08월 27일 23시 27분 49초에 업로드 된 글입니다.
    작성자: noun06

    짝수와 홀수

    • 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요.

     

    • num을 2로 나눈 나머지를 확인하여 짝수인지 홀수인지를 판별하는 문제.
    • num이 2로 나누어 떨어진다면(num % 2 ==0이 참이라면) answer을 Even으로 설정하고, 그렇지 않다면 Odd로 설정.
    public class Solution {
        public string solution(int num) {
            string answer = "";
            
            if(num%2 == 0){
                answer = "Even";
            }else{
                answer = "Odd";
            }
            
            return answer;
        }
    }

     

    평균 구하기

    • 정수를 담고 있는 배열 arr의 평균값을 return하는 함수, solution을 완성해보세요.

     

    • 평균을 계산할 변수 answer와 배열의 요소들의 합을 저장할 변수 sum을 0으로 초기화.
    • 배열의 길이만큼 반복하는 루프 실행, 루프 안에서 배열의 인덱스에 해당하는 요소를 sum에 더함.
    • 루프 종료 후 sum을 배열의 길이로 나누어 평균값 계산, 이 때 double 타입 캐스팅을 사용하여 정수 나눗셈을 피함.
    • 게산된 평균값을 반환.
    public class Solution {
        public double solution(int[] arr) {
            double answer = 0;
            int sum = 0;
            
            for(int i = 0; i<arr.Length; i++){
                sum += arr[i];
            }
            answer = sum / (double)arr.Length;
            
            return answer;
        }
    }

     

    자릿수 더하기

    • 자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.
      예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

     

    • 자릿수의 합을 계산할 변수 sum을 0으로 초기화.
    • 자릿수를 하나씩 처리하기 위해 주어진 숫자 n이 0보다 클 때까지 반복.
    • 루프 안에서 n을 10으로 나눈 나머지를 sum에 더함.(나머지는 n의 가장 오른쪽 자릿수를 나타냄).
    • n을 10으로 나누어서 자릿수를 하나씩 줄임. (예를 들어, 123을 10으로 나누면 12가 됨).
    • 루프가 끝나면 모든 자릿수의 합이 sum에 저장됨. sum을 반환.
    public class Solution {
        public int solution(int n) {
            int sum = 0;
            
            while (n > 0) {
                sum += n % 10;  
                n /= 10;        
            }
            
            return sum;
        }
    }

     

    약수의 합

    • 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

     

    • 약수의 합을 저장할 변수 answer을 0으로 초기화.
    • i 부터 n까지 반복하는 루프를 시작. i는 현재 찾고있는 더해질 약수 후보들을 의미함.
    • n을 i로 나눴을 때 나머지가 0인지 확인.(i가 n의 약수인지 확인)
    • 약수가 맞다면 해당 i값을 answer에 더함. 이렇게 n의 약수를 하나씩 더해 합을 계산.
    • 계산된 약수의 합인 answer 반환.
    public class Solution {
        public int solution(int n) {
            int answer = 0;
            
            for(int i = 1; i < n+1; i++){
                if(n%i == 0){
                answer += i;
                }
            }
            
            return answer;
        }
    }

     

    나머지가 1이 되는 수 찾기

    • 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.

     

    • 가장 작은 자연수 x를 찾기 위해 변수 min을 가장 큰 값으로 초기화.(int.MaxValue).
    • i 부터 n까지 반복하는 루프를 시작. 루프 안에서 n을 i로 나누었을 때 나머지가 1인지 확인.
    • 나머지가 1이며 현재의 i값이 기존 min 보다 작은 경우 해당하는 i를 min에 저장.(최솟값 할당)
    • 모든 i값을 반복하면서 min에 가장 작은 나머지 1을 만족하는 i값이 저장됨.
    • answer에 min 값을 할당 후 answer 반환.
    public class Solution {
        public int solution(int n) {
            int answer = 0;
            int min = int.MaxValue;
    
            for (int i = 1; i < n + 1; i++) {
                if (n % i == 1 && i < min) {
                    min = i;
                }
            }
    
            answer = min;
            return answer;
        }
    }

     

    x만큼 간격이 있는 n개의 숫자

    • 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.(x는 -10000000 이상, 10000000 이하인 정수입니다.n은 1000 이하인 자연수입니다.)

     

    • 결과값을 저장할 배열인 answer 배열을 생성하고 길이를 n으로 설정. 제한 조건을 만족하기 위해 long 자료형 사용.
    • 현재의 인덱스 i가 0부터 n-1까지 반복하는 루프 시작. 
    • 결과 배열 answer의 i번째 요소에 x 부터 시작해 x씩 증가하는 숫자값(x+x*i)을 할당.(x, 2x, 3x,...,nx)
    •  배열의 요소들이 순서대로 x부터 nx의 값을 가지게됨. answer배열을 반환.
    public class Solution {
        public long[] solution(int x, int n) {
            long[] answer = new long[n];
            
            for(long i = 0; i < n; i++){
                answer[i] = x + x*i;    
            }
            return answer;
        }
    }

     

     

    댓글