문제 설명

정수가 담긴 리스트 num_list가 주어질 때,
모든 원소들의 곱이 모든 원소들의 합의 제곱보다 작으면 1을 크면 0을 return하도록 
solution 함수를 완성해주세요.

제한 사항

2 ≤ num_list의 길이 ≤ 10
1 ≤ num_list의 원소 ≤ 9

입출력 예

num_list result
[3, 4, 5, 2, 1] 1
[5, 7, 8, 3] 0

입출력 예 설명

입출력 예 #1

모든 원소의 곱은 120, 합의 제곱은 225이므로 1을 return합니다.

 

입출력 예 #2

모든 원소의 곱은 840, 합의 제곱은 529이므로 0을 return합니다.

 

 

나의 풀이

using System;

public class Solution {
    public int solution(int[] num_list) 
    {
        int answer = 1;
        int answer2 = 0;
        int result = 0;
        
        for (int i = 0; i < num_list.Length; i++)
            {
                answer *= num_list[i];
            }
        
        for (int i = 0; i < num_list.Length; i++)
            {
                answer2 += num_list[i];
            }
            
            result = answer2 * answer2;
            return answer < result ? 1 : 0;
    }
}

문제 설명

1부터 6까지 숫자가 적힌 주사위가 세 개 있습니다. 
세 주사위를 굴렸을 때 나온 숫자를 각각 a, b, c라고 했을 때 얻는 점수는 다음과 같습니다.

세 숫자가 모두 다르다면 a + b + c 점을 얻습니다.
세 숫자 중 어느 두 숫자는 같고 나머지 다른 숫자는 다르다면 (a + b + c) × (a2 + b2 + c2 )점을 얻습니다.
세 숫자가 모두 같다면 (a + b + c) × (a2 + b2 + c2 ) × (a3 + b3 + c3 )점을 얻습니다.
세 정수 a, b, c가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.

제한 사항

a, b, c는 1이상 6이하의 정수입니다.

입출력 예

a b c result
2 6 1 9
5 3 3 473
4 4 4 110592

입출력 예 설명

입출력 예 #1

예제 1번에서 세 주사위 숫자가 모두 다르므로 2 + 6 + 1 = 9점을 얻습니다. 따라서 9를 return 합니다.

 

입출력 예 #2

예제 2번에서 두 주사위 숫자만 같으므로 (5 + 3 + 3) × (52 + 32 + 32 ) = 11 × 43 = 473점을 얻습니다. 
따라서 473을 return 합니다.

 

입출력 예 #3

예제 3번에서 세 주사위 숫자가 모두 같으므로 
(4 + 4 + 4) × (42 + 42 + 42 ) × (43 + 43 + 43 ) = 12 × 48 × 192 = 110,592점을 얻습니다. 
따라서 110592를 return 합니다.

나의 풀이

using System;

public class Solution 
{
    public int solution(int a, int b, int c) 
    {
        int answer = 0;
            if (a == b || b == c || a == c)
            {
                double squared = MathF.Pow(a, 2) + Math.Pow(b, 2) + Math.Pow(c, 2);
                answer = (a + b + c) * Convert.ToInt16(squared);
                if (a == b && b == c)
                {
                    double cubed = MathF.Pow(a, 3) + Math.Pow(b, 3) + Math.Pow(c, 3);;
                    answer *= Convert.ToInt16(cubed);
                }
            }
            else
            {
                answer = a + b + c;
            }
            return answer;
    }
}

 

Math.Pow 메서드 사용

 

'같은' 조건과 '다른' 조건 분리

 

'일부가 같은' 조건 안에 이중 중첩문으로 '모두가 같은' 조건

문제 설명

두 정수 a, d와 길이가 n인 boolean 배열 included가 주어집니다. 
첫째항이 a, 공차가 d인 등차수열에서 included[i]가 i + 1항을 의미할 때
이 등차수열의 1항부터 n항까지 included가 true인 항들만 더한 값을 
return 하는 solution 함수를 작성해 주세요.

 

제한사항

1 ≤ a ≤ 100
1 ≤ d ≤ 100
1 ≤ included의 길이 ≤ 100
included에는 true가 적어도 하나 존재합니다.

 

입출력 예

a d included result
3 4 [true, false, false, true, true] 37
7 1 [false, false, false, true, false, false, false] 10

입출력 예 설명

입출력 예 #1

예제 1번은 a와 d가 각각 3, 4이고 included의 길이가 5입니다. 이를 표로 나타내면 다음과 같습니다.

 

 

  1항 2항 3항 4항 5항
등차수열 3 7 11 15 19
included true false false true true
따라서 true에 해당하는 1항, 4항, 5항을 더한 3 + 15 + 19 = 37을 return 합니다.

 

나의 풀이

using System;

public class Solution 
{
    public int solution(int a, int d, bool[] included) 
    {
        int answer = 0;
        for(int i = 0; i < included.Length; i++)
        {
            if(included[i] == true)
            {
                answer += a + i*d;
            }
        }
        return answer;
    }
}

 

등차수열은 연속하는 두 항의 차이가 일정한 수열

 

included[i] = i + 1

 

인덱스0번이 1항을 의미하며

 

a+d, a+2d, a+3d  · · · a+(n-1)d로 나타낸다.

 

* 주어진 배열 included의 true, false 조건은 문제에서 주어진 채로 시작하는 문제로

문제 조건을 따라가기만 하면됨

 

문제 설명

문제 설명
문자열 code가 주어집니다.
code를 앞에서부터 읽으면서 만약 문자가 "1"이면 mode를 바꿉니다.
mode에 따라 code를 읽어가면서 문자열 ret을 만들어냅니다.

mode는 0과 1이 있으며, idx를 0 부터 code의 길이 - 1 까지 1씩 키워나가면서 
code[idx]의 값에 따라 다음과 같이 행동합니다.

mode가 0일 때
code[idx]가 "1"이 아니면 idx가 짝수일 때만 ret의 맨 뒤에 code[idx]를 추가합니다.
code[idx]가 "1"이면 mode를 0에서 1로 바꿉니다.
mode가 1일 때
code[idx]가 "1"이 아니면 idx가 홀수일 때만 ret의 맨 뒤에 code[idx]를 추가합니다.
code[idx]가 "1"이면 mode를 1에서 0으로 바꿉니다.
문자열 code를 통해 만들어진 문자열 ret를 return 하는 solution 함수를 완성해 주세요.

단, 시작할 때 mode는 0이며, return 하려는 ret가 만약 빈 문자열이라면 대신 "EMPTY"를 return 합니다.

 

제한사항

1 ≤ code의 길이 ≤ 100,000
code는 알파벳 소문자 또는 "1"로 이루어진 문자열입니다.

 

입출력 예

code result
"abc1abc1abc" "acbac"

입출력 예 설명

입출력 예 #1

code의 각 인덱스 i에 따라 다음과 같이 mode와 ret가 변합니다.

 

 

i code[i] mode ret
0 "a" 0 "a"
1 "b" 0 "a"
2 "c" 0 "ac"
3 "1" 1 "ac"
4 "a" 1 "ac"
5 "b" 1 "acb"
6 "c" 1 "acb"
7 "1" 0 "acb"
8 "a" 0 "acba"
9 "b" 0 "acba"

 

나의 풀이

using System;

public class Solution 
{
    public string solution(string code) 
    {
        string ret = "";
            int mode = 0;

            for (int i = 0; i < code.Length; i++)
            {
                if (code[i] == '1')
                {
                    mode = 1 - mode;
                }
                else
                {
                    if ((mode == 0 && i % 2 == 0) || (mode == 1 && i % 2 == 1))
                    {
                        ret += code[i];
                    }
                }
            }

            return string.IsNullOrEmpty(ret) ? "EMPTY" : ret;
    }
}

 

code는 string, code[i]는 char 자료형

 

0과 1모드 표현 1-mode(mode가 0이면 1, 1이면 0)

 

string.IsNullOrEmpty("") 지정된 문자열이 null이거나 빈 문자인지 나타냄

문제 설명

두 정수 a, b와 boolean 변수 flag가 매개변수로 주어질 때, 
flag가 true면 a + b를 false면 a - b를 return 하는 solution 함수를 작성해 주세요.

 

 

제한사항
-1,000 ≤ a, b ≤ 1,000

 

입출력 예
a b flag result
-4 7 true 3
-4 7 false -11

입출력 예

입출력 예 #1

예제 1번에서 flag가 true이므로 a + b = (-4) + 7 = 3을 return 합니다.

 

입출력 예 #2

예제 2번에서 flag가 false이므로 a - b = (-4) - 7 = -11을 return 합니다.

 

나의 풀이

using System;

public class Solution {
    public int solution(int a, int b, bool flag) 
    {
        int answer = 0;
        
        switch (flag)
            {
                case true:
                    answer = a + b;
                    break;
                case false:
                    answer = a - b;
                    break;
            }
        
        return answer;
    }
}

 

다른 사람 풀이

using System;

public class Solution 
{
    public int solution(int a, int b, bool flag) 
    {
        return flag ? a+b : a-b;
    }
}

+ Recent posts