방명록
- C# #20 알고리즘 코드카타 12023년 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; } }
'C#' 카테고리의 다른 글
C# #21 TextRPG_Team 1 (0) 2023.08.28 C# #19 정렬 알고리즘 (0) 2023.08.26 C# #17 TextRPG - 턴제 전투 (0) 2023.08.25 C# #16 델리게이트, 람다, LINQ, 고급 자료형 및 기능 (0) 2023.08.24 C# #15 인터페이스, 열거형, 예외 처리, 값형과 참조형 (0) 2023.08.24 다음글이 없습니다.이전글이 없습니다.댓글