//구글콘솔 광고 추가가
테스트 케이스 추가
Parameters Return
queue1(int[ ]) queue2(int[ ])
[2, 3, 2] [1, 1, 1] 1
[1, 1, 1, 1, 1, 1, 1, 1, 1, 10] [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] -1

 

두 큐 합 같게 만들기 문제

 

내 코드
using System;
using System.Collections.Generic;
using System.Linq;
public class Solution {
    public int solution(int[] queue1, int[] queue2) {
        int answer = 0;
        Queue<int> q1 = new Queue<int>();
        Queue<int> q2 = new Queue<int>();
        long sum1 = 0;
        long sum2 = 0;

        foreach(int n in queue1)
        {
            q1.Enqueue(n);
            sum1 += n;
        }
        foreach(int n in queue2)
        {
            q2.Enqueue(n);
            sum2 += n;
        }
        //평균값 구할때 배열.Sum()으로 계산하니까 런타임 걸렸어. 알아둬라
        //long average = (queue1.Sum() + queue2.Sum()) /2;        
        long average = (sum1 + sum2) / 2;
        
        if((sum1 + sum2) % 2 !=0) return -1;
        
        int maxLength = (queue1.Length + queue2.Length)*2;
        while(answer < maxLength)
        {
            if(average == sum1) return answer;
            
            if(average > sum1)
            {
                int dequeueNum = q2.Dequeue();
                q1.Enqueue(dequeueNum);
                sum1 += dequeueNum;
                answer ++;
            }
            else
            {
                int dequeueNum = q1.Dequeue();
                q2.Enqueue(dequeueNum);
                sum1 -= dequeueNum;
                answer ++;
            }
        }
        return -1;
    }
}

 

728x90
반응형
테스트 케이스 추가
Parameters Return
[["00:01", "00:10"], ["00:19", "00:29"]] 2
[["08:00", "08:30"], ["08:00", "13:00"], ["12:30", "13:30"]] 2
[["16:00", "16:10"], ["16:20", "16:30"], ["16:40", "16:50"]] 1
[["09:10", "10:10"], ["10:20", "12:20"], ["12:30", "13:20"]] 1
[["10:00", "10:10"]] 1
호텔 대실

 

내 코드
using System;
using System.Collections.Generic;
using System.Linq;

public class Solution {
    private int StringChangeInt(string str)
    {
        string[] strSplit = str.Split(':');
        return int.Parse(strSplit[0]) * 60 + int.Parse(strSplit[1]);
    }

    public int solution(string[,] book_time) {
        int answer = 0;
        int[] keyArr = new int[book_time.GetLength(0)];
        List<(int, int)> list = new List<(int, int)>();
        List<int> roomCheck = new List<int>();

        for (int i = 0; i < book_time.GetLength(0); i++)
        {
            list.Add((StringChangeInt(book_time[i, 0]), StringChangeInt(book_time[i, 1])));

        }
        var sortlist = list.OrderBy(o => o.Item1);

        foreach((int inRoom, int outRoom) room in sortlist)
        {
            int num = roomCheck.FindIndex(n => n <= room.inRoom - 10);
            if (num == -1)
            {
                roomCheck.Add(room.Item2);
            }
            else
            {
                roomCheck[num] = room.Item2;
            }
        }
        answer = roomCheck.Count;
        return answer;
    }
}
728x90
반응형

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

+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
반응형

+ Recent posts