//구글콘솔 광고 추가가

딕셔너리와 함수를 만들어서 푼 문제.

+4점

할인 행사 문제

내 코드

 

using System;                                                                           // +4
using System.Collections.Generic;
public class Solution {
    public int solution(string[] want, int[] number, string[] discount) {
        int answer = 0;
        Dictionary<string,int> map = new Dictionary<string, int>();
        for (int i = 0; i < want.Length; i++)
        {
            map[want[i]] = number[i];
        }
        //10일연속으로 구매성공해야 되니까 할인되는 날짜에서 -9
        for (int i = 0; i < discount.Length-9; i++)
        {
            answer += CheckStart(map, discount, i);
        }
        return answer;
    }
    //열흘간 원하는 제품 다 구매 가능한지 확인 함수
    public int CheckStart(Dictionary<string, int> dic, string[] str, int index)
    {
        Dictionary<string, int> map = new Dictionary<string, int>(dic);
        for (int i = index; i < index + 10; i++)
        {
            if (map.ContainsKey(str[i]))
            {
                map[str[i]]--;
            }
            else
                return 0;
        }
        bool isZero = false; //원하는 재료 다 구매됬는지 체크 bool 값
        foreach(int n in map.Values)
        {
            if(n == 0)
            {
                isZero = true;
            }
            else
            {
                isZero = false; //한개라도 재료 남아있으면 false
                break;
            }
        }
        if (isZero)
        {
            return 1;
        }
        else
            return 0;
    }
}
728x90
예산 문제

내 코드
using System;

public class Solution {
    public int solution(int[] d, int budget) {
        int answer = 0;
        Array.Sort(d);
        int num = d.Length;
        for(int i =0; i < num; i++)
        {
            if (budget >= 0 && (budget - d[i]) >= 0)
            {
                budget -= d[i];
                answer = i+1;
            }
            else
            {
                answer = i;
                break;
            }       
        }
        return answer;
    }
}
728x90

테스트 케이스 하나 추가

Parameters Return
n(int) 2 words(string[]) ["ac", "ca", "ac", "ac"] [1, 2]
영어 끝말잇기 문제

내 코드
using System;

class Solution
{
    public int[] solution(int n, string[] words)
    {
        int[] answer = new int[2];
        int num = 0;
        for (int i = 0; i < words.Length; i++)
        {
            if (num != 0) break;
            if (i < words.Length - 1)
            {
                if (words[i][words[i].Length - 1] != words[i + 1][0])
                {
                    num = i + 1;
                    break;
                }
                for (int j = 0; j < i; j++)
                {
                    if (words[i+1] == words[j])
                    {
                        num = i+1;
                        break;
                    }
                }
            }
            else
            {
                if (words[i - 1][words[i - 1].Length - 1] != words[i][0])
                {
                    num = i;
                    break;
                }
                for (int j = 0; j < i; j++)
                {
                    if (words[i] == words[j])
                    {
                        num = i;
                        break;
                    }
                }
            }
        }
        if (num != 0)
        {
            answer[0] = num % n + 1;
            answer[1] = num / n + 1;
        }
        else
        {
            answer[0] = 0;
            answer[1] = 0;
        }
        return answer;
    }
}
728x90

쉬운 문제라 별다른 생각 없이 풀었다가 테스트 10이 틀렸다. 고민하던 찰나에 혹시나 해서  result에 숫자도 없고 x값도 그냥 "x" 일 때인가 싶어서 이 조건 하나 추가 해서 통과했다. 질문창에 가보니 나와 같이 Test10이 문제였던 사람들이 많아서 글로 추가 작성 해뒀었다. 그 후로 내 글 보고 통과됐다는 사람들이 있어서 기분 좋았던 문제.

다항식 더하기 문제

내 코드
using System;
using System.Linq;
public class Solution {
    public string solution(string polynomial) {
        string[] answer = polynomial.Split(" ");
        string result = "";
        string str = "";
        int xNum = 0;
        int num = 0;
        for (int i = 0; i < answer.Length; i += 2)
        {
            if (answer[i].Contains("x"))
            {
                str = answer[i].Replace("x", string.Empty);
                if (str == "")
                {
                    str = "1";
                }
                xNum += Convert.ToInt32(str);
            }
            else
                num += Convert.ToInt32(answer[i]);
        }
        if (num == 0)
        {
            if(xNum ==1)
                result = "x";
            else
                result = xNum + "x";
        }
        else
        {
            if(xNum ==0)
                result = num.ToString();
            else if(xNum ==1)
            {
                result = "x " + "+ " + num;
            }
            else
                result = xNum + "x " + "+ " + num;
        }
        return result;
    }
}
728x90

+ Recent posts