//구글콘솔 광고 추가가
테스트 케이스 추가
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
반응형
성격 유형 검사하기 문제

 

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

public class Solution {
    public string solution(string[] survey, int[] choices) {
        string answer = "";
        StringBuilder answerSB = new StringBuilder();
        Dictionary<char,int> surveyDic = new Dictionary<char,int>()
        {
            { 'R', 0 },
            { 'T', 0 },
            { 'C', 0 },
            { 'F', 0 },
            { 'J', 0 },
            { 'M', 0 },
            { 'A', 0 },
            { 'N', 0 },
        };
     
        char[] c = new char[2];
        for (int i = 0; i < survey.Length; i++)
        {
            c = survey[i].ToCharArray();

            if (choices[i] > 4)
            {
                surveyDic[c[1]] += choices[i] - 4;
            }
            else if (choices[i] < 4)
            {
                surveyDic[c[0]] += 4 - choices[i];
            }
        }
        answerSB.Append(surveyDic['R'] >= surveyDic['T'] ? "R" : "T");
        answerSB.Append(surveyDic['C'] >= surveyDic['F'] ? "C" : "F");
        answerSB.Append(surveyDic['J'] >= surveyDic['M'] ? "J" : "M");
        answerSB.Append(surveyDic['A'] >= surveyDic['N'] ? "A" : "N");
        answer = answerSB.ToString();
        return answer;
    }
}
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
반응형
신고 결과 받기

 

내 코드
using System;
using System.Collections.Generic;
public class Solution {
    public int[] solution(string[] id_list, string[] report, int k) {
        int[] answer = new int[id_list.Length];
        Dictionary<string, List<string>> resultDic = new Dictionary<string, List<string>>();
        
        foreach (string r in report)
        {
            string[] str = r.Split(" ");
            if(!resultDic.ContainsKey(str[1]))
            {
                List<string> list = new List<string>();
                list.Add(str[0]);
                resultDic.Add(str[1],list);
                continue;
            }
            if (!resultDic[str[1]].Contains(str[0]))
            {
                resultDic[str[1]].Add(str[0]);
            }
        }
        for (int i = 0; i < id_list.Length; i++)
        {
            foreach (KeyValuePair<string, List<string>> item in resultDic)
            {
                if (item.Value.Contains(id_list[i]))
                {
                    if (item.Value.Count >= k)
                    {
                        answer[i] ++;
                    }
                }
            }
        }
        return answer;
    }
}
728x90
반응형

테스트 케이스 추가

numbers(long[]) Return
[1001, 337, 0, 1, 333, 673, 343, 221, 898, 997, 121, 1015, 665, 779, 891, 421, 222, 256, 512, 128, 100] [1002, 338, 1, 2, 334, 674, 347, 222, 899, 998, 122, 1019, 666, 781, 893, 422, 223, 257, 513, 129, 101]
2개 이하로 다른 비트 문제

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

//+6
public class Solution {
    public long[] solution(long[] numbers) {
        long[] answer = new long[numbers.Length];
        for (int i = 0; i < numbers.Length; i++)
        {
            string numStr = Convert.ToString(numbers[i], 2);
            int startIndex = numStr.IndexOf("1");

            int zeroPoint = numStr.LastIndexOf("0");
            if (zeroPoint == -1)
            {
                string sub = numStr.Substring(startIndex+1);
                numStr = "10" + sub;
            }
            else
            {
                char[] chArr = numStr.ToCharArray();
                chArr[zeroPoint] = '1';
                if(zeroPoint +1 < numStr.Length) 
                    chArr[zeroPoint+1] = '0';
                numStr = new string(chArr);
            }
            answer[i] = Convert.ToInt64(numStr, 2);
        }
        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