코딩테스트 입문 문제 풀이

강예찬
∙∙조회 1

순서쌍의 개수

문제 설명

순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.

  1. 문제해석

순서쌍 (a, b)의 곱으로 자연수 n이 나올 때, 자연수 n 의 순서쌍의 개수를 구하는 문제다.

  1. 문제해결 리스트화

먼저 a, b 두 수의 곱이 자연수 n 이 된다는 것은 각 두 수가 자연수 n 의 약수인 것을 알 수 있다.

for문으로 i 를 1부터 n 까 반복하고, if문으로 n 과 i 를 나누었을 때 나머지가 0이 약수이므로 answer 를 하나씩 증가한다.

  1. 작성한 소스코드
ini
using System;

public class Solution {
    public int solution(int n) {
        int answer = 0;
        for(int i = 1; i <= n; i++)
        {
            if(n % i == 0)
            {
                answer++;
            }
        }
        return answer;
    }

점의 위치 구하기

문제 설명

사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다. 사분면은 아래와 같이 1부터 4까지 번호를매깁니다.

스크린샷 2022-07-07 오후 3.27.04 복사본.png

  • x 좌표와 y 좌표가 모두 양수이면 제1사분면에 속합니다.
  • x 좌표가 음수, y 좌표가 양수이면 제2사분면에 속합니다.
  • x 좌표와 y 좌표가 모두 음수이면 제3사분면에 속합니다.
  • x 좌표가 양수, y 좌표가 음수이면 제4사분면에 속합니다.

x 좌표 (x, y)를 차례대로 담은 정수 배열 dot이 매개변수로 주어집니다. 좌표 dot이 사분면 중 어디에 속하는지 1, 2, 3, 4 중 하나를 return 하도록 solution 함수를 완성해주세요

  1. 문제해석

좌표 dot 이 사분면 중 어디에 속하는 지 구하는 문제다.

  1. 문제해결 리스트화

if문으로 정수 배열 dot 의 첫 번째 배열과 두 번째 배열이 모두 양수면 1사분면 속한다.

다음 else if문에서 정수 배열 dot 의 첫 번째 배열이 음수이고, 두 번째 배열이 양수면 2사분면 속한다.

다음 else if문에서 정수 배열 dot 의 첫 번째 배열이 음수이고, 두 번째 배열이 음수면 3사분면 속한다.

다음 else if문에서 정수 배열 dot 의 첫 번째 배열이 양수이고, 두 번째 배열이 음수면 2사분면 속한다.

  1. 작성한 소스코드
ini
public class Solution {
    public int solution(int[] dot) {
        int answer = 0;
        
        if(dot[0] > 0 && dot[1] > 0)
        {
            answer = 1;
        }
        else if(dot[0] < 0 && dot[1] > 0)
        {
            answer = 2;
        }
        else if(dot[0] < 0 && dot[1] < 0)
        {
            answer = 3;
        }
        else if(dot[0] > 0 && dot[1] < 0)
        {
            answer = 4;
        }
        return answer;
    }
}

최댓값 만들기 (1)

문제 설명

정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.

  1. 문제해석

정수 배열 numbers 의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 구하는 문제다.

  1. 문제해결 리스트화

가장 큰 값을 max1과 두 번째로 큰 값을 max2로 변수로 둔다.

foreach문으로 정수 num 를 정수 배열 numbers 를 순회한다.

다음 if문에서 num > max1 이라면 max2 = max1으로 기존의 큰 값이 두 번째로 큰 값이 되고, 새로운 최댓값이 갱신된다.

다음 else if문에서 num > max2이라 max2 = num로 두 번째로 큰 값이 갱신된다.

  1. 작성한 소스코드
ini
using System;

public class Solution {
    public int solution(int[] numbers) {
        int max1 = 0;
        int max2 = 0;
        
        foreach(int num in numbers)
        {
            if(num > max1)
            {
                max2 = max1;
                max1 = num;
            }
            else if(num > max2)
            {
                max2 = num;
            }
        }
        return max1 * max2;
    }
}