문제 설명

정수 배열 numLog가 주어집니다. 처음에 numLog[0]에서 부터 시작해 "w", "a", "s", "d"로 
이루어진 문자열을 입력으로 받아 순서대로 다음과 같은 조작을 했다고 합시다.

"w" : 수에 1을 더한다.
"s" : 수에 1을 뺀다.
"d" : 수에 10을 더한다.
"a" : 수에 10을 뺀다.
그리고 매번 조작을 할 때마다 결괏값을 기록한 정수 배열이 numLog입니다. 
즉, numLog[i]는 numLog[0]로부터 총 i번의 조작을 가한 결과가 저장되어 있습니다.

주어진 정수 배열 numLog에 대해 조작을 위해 입력받은 문자열을 return 하는 
solution 함수를 완성해 주세요.

제한사항

2 ≤ numLog의 길이 ≤ 100,000
-100,000 ≤ numLog[0] ≤ 100,000
1 ≤ i ≤ numLog의 길이인 모든 i에 대해 |numLog[i] - numLog[i - 1]|의 값은 1 또는 10입니다.
numlog result
[0, 1, 0, 10, 0, 1, 0, 10, 0, -1, -2, -1] "wsdawsdassw"

 


입출력 예 설명

입출력 예 #1

result인 "wsdawsdassw"를 따라 numLog[0]에서부터 시작해 조작을 하면 numLog의 값과 순서대로 일치합니다. 
따라서 "wsdawsdassw"를 return 합니다.

Hint

"수 조작하기 1" 문제의 n값이 numLog[0]에 해당하며,
이 문제에서 주어진 numLog에 따라 "수 조작하기 1" 문제의 control을 구하는 문제라고 이해할 수 있습니다.

입출력 예 #1은 "수 조작하기 1" 문제의 입출력 예 #1과 같은 예시이므로 참고하시기 바랍니다.

나의 풀이

public class Solution 
{
    public string solution(int[] numLog) 
    {
        string answer = "";
        for (int i = 1; i < numLog.Length; i++)
        {
            switch (numLog[i] - numLog[i - 1])
            {
                case 1:
                    answer += 'w';
                    break;
                case -1:
                    answer += 's';
                    break;
                case 10:
                    answer += 'd';
                    break;
                case -10:
                    answer += 'a';
                    break;
            }
        }
        return answer;
    }
}

 

문제 설명

정수 n과 문자열 control이 주어집니다. 
control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, 
control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다.

"w" : n이 1 커집니다.
"s" : n이 1 작아집니다.
"d" : n이 10 커집니다.
"a" : n이 10 작아집니다.
위 규칙에 따라 n을 바꿨을 때 
가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요.

제한사항

 

-100,000 ≤ n ≤ 100,000
1 ≤ control의 길이 ≤ 100,000
control은 알파벳 소문자 "w", "a", "s", "d"로 이루어진 문자열입니다.
n control result
0 "wsdawsdassw" -1

 


입출력 예 설명

입출력 예 #1

수 n은 control에 따라 다음과 같은 순서로 변하게 됩니다.
0 → 1 → 0 → 10 → 0 → 1 → 0 → 10 → 0 → -1 → -2 → -1
따라서 -1을 return 합니다.

나의 풀이

 
public class Solution 
{
    public int solution(int n, string control) 
    {   
        foreach (char c in control)
        {
            switch (c)
            {
                case 'w':
                    n += 1;
                    break;
                case 's':
                    n -= 1;
                    break;
                case 'd':
                    n += 10;
                    break;
                default:
                    n -= 10;
                    break;
            }
        }
        return n;
    }
}

 

 

문제 설명

정수가 담긴 리스트 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 조건은 문제에서 주어진 채로 시작하는 문제로

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

 

+ Recent posts