//구글콘솔 광고 추가가

쉬운 문제라 별다른 생각 없이 풀었다가 테스트 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
반응형

처음에 아무 생각 없이 정렬해서 가장 작은 수를 지워버렸는데 그런 문제가 아니였다. 배열 안에서 가장 작은 수만 제거 하면 된다. 이게 왜 9점이나 줬을까.


제일 작은 수 제거하기 문제

내 코드
using System;
using System.Collections.Generic;
//+9
public class Solution {
    public int[] solution(int[] arr) {
        int min = arr[0];
        List<int> answer = new List<int>(arr);
        if (arr.Length == 1) answer.Add(-1);
        else
        {
            for (int i = 0; i < arr.Length; i++)
            {
                if(min > arr[i]) min = arr[i];
            }
        }
        answer.Remove(min);
        return answer.ToArray();
    }
}

 

728x90
반응형

처음엔 works의 배열에 있는 작업량이 모두 변경되도 상관 없는 줄 알고 풀었다가 잘못됨을 직감하고 다시 품.

sort로 정렬을 해주고 작업량이 가장 많은 날의 일정에서 --해주면 된다.

 

+20점

테스트 케이스 추가

n(int) works(int[]) Return
10 [10,10,1] 51 >>  5,5,1

야근 지수 문제

 

내 코드
using System;
using System.Linq;
//+20
public class Solution {
    public long solution(int n, int[] works) {
        long answer = 0;     
        int sum = works.Sum();
        if (sum <= n)
            answer = 0;
        else
        {
            Array.Sort(works);
            for(int i =0; i < n; i++)
            {
                int lastIndex = works.Length - 1;
                while (lastIndex >=0 && works[lastIndex] <= works[lastIndex-1])
                {
                    lastIndex--;
                    if (lastIndex == 0) break;
                }
                --works[lastIndex];
            }
            foreach(long i in works)
            {
                answer += i * i;
            }
        }
        return answer;
    }
}
728x90
반응형

level 3 문제는 아닌 것 같은데 내가 편법으로 푼건가 고민되는 문제. +3점

sort로 정렬한 다음 A랑 B랑 같은 값을 내게 되면 B가 자기꺼에서 더 큰 수를 내밀어야 됨.  

 

테스트 케이스 추가

A B
{1,1,2,5,8} {1,1,1,2,3}

숫자게임 문제

 

내 코드
using System;
//+3
public class Solution {
    public int solution(int[] A, int[] B) {
        bool[] C = new bool[B.Length];
        int answer = -1;
        int num = 0;
        
        Array.Sort(A);
        Array.Sort(B);

        for(int i = 0; i < A.Length; i++)
        {
            for (int j= num; j < B.Length; j++)
            {
                if (A[i] < B[j])
                {
                    if (!C[j])
                    {
                        answer++;
                        C[j] = true;
                        num = j;
                        break;
                    }
                }
            }
        }
        if (answer == -1)
            answer = 0;
        else
            answer += 1;
        return answer;
    }
}
728x90
반응형

노트에 계속 풀어보다 정답으로 간 문제. 그래서 테스트 케이스를 엄청 추가했다.

추가한 테스트 케이스들

Parameters Return
["OOX", "XXO", "OXO"] 1
["XXX", "XXX", "XXX"] 0
["OOO", "X.X", "..."] 1
["..O", "...", "..."] 1
[".X.", "...", "..."] 0
[".OX", "OXO", "XO."] 0
["XXX", ".OO", "O.."] 1
["XXX", "XOO", "OOO"] 0
["OX.", "...", "..."] 1

 


혼자서 하는 택택토 문제

내 코드
using System;

public class Solution {
    public int solution(string[] board) {
        int answer = 1;
        int xCount = 0;
        int oCount = 0;
        int oWin = 0;
        int xWin = 0;

        for (int i = 0; i < board.Length; i++)
        {
            for (int j = 0; j < board[i].Length; j++)
            {
                if (board[i][j] == 'O')
                {
                    oCount += 1;
                }
                else if (board[i][j] == 'X')
                {
                    xCount += 1;
                }
            }
        }   
        for (int i = 0; i < 3; i++)
        {
            if (board[i] == "OOO")
            {
                oWin += 1;
            }
            else if (board[i] == "XXX")
            {
                xWin += 1;
            }
            else if(board[0][i] == 'O' && board[1][i] == 'O' && board[2][i] == 'O')
            {
                oWin += 1;
            }
            else if (board[0][i] == 'X' && board[1][i] == 'X' && board[2][i] == 'X')
            {
                xWin += 1;
            }
            else if (board[0][0] == 'O' && board[1][1] == 'O' && board[2][2] == 'O')
            {
                oWin += 1;
            }
            else if (board[0][0] == 'X' && board[1][1] == 'X' && board[2][2] == 'X')
            {
                xWin += 1;
            }
            else if (board[0][2] == 'O' && board[1][1] == 'O' && board[2][0] == 'O')
            {
                oWin += 1;
            }
            else if (board[0][2] == 'X' && board[1][1] == 'X' && board[2][0] == 'X')
            {
                xWin += 1;
            }
        }
        if(oCount < xCount)
        {
            answer =0;
        }
        if(oCount > xCount +1)
        {
            answer =0;
        }
        if(oWin + xWin > 1)
        {
            if(oWin> 1 && oCount -xCount == 1)
            {
                answer =1;
            }
            else
            {
                answer =0;
            }
        }
        if (xWin == 1 && oCount > xCount)
        {
            answer = 0;
        }
        if(oWin == 1 && oCount == xCount)
        {
            answer = 0;
        }
        return answer;
    }
}

 

728x90
반응형
대충 만든 자판 문제

 

내 코드
using System;
using System.Collections.Generic;
public class Solution {
    public int[] solution(string[] keymap, string[] targets) 
    {   
        Dictionary<char, int > dic = new Dictionary<char, int>();
        List<int> answer = new List<int>();
        int num = 0;
        //알파벳별 최소순서 정리
        for (int i = 0; i < keymap.Length; i++)
        {
            for (int j = 0; j < keymap[i].Length; j++)
            {
                if (!dic.ContainsKey(keymap[i][j]))
                {
                    dic.Add(keymap[i][j], j+1);
                }
                else
                {
                    if(dic[keymap[i][j]] > j+1)
                    {
                        dic[keymap[i][j]] = j+1;
                    }
                }
            }
        }
        //확인
        for (int i = 0; i < targets.Length; i++)
        {
            for (int j = 0; j < targets[i].Length; j++)
            {
                if(dic.ContainsKey(targets[i][j]))
                {
                    num += dic[targets[i][j]];
                }
                else
                {
                    num = -1;
                    break;
                }    
                
            }
            answer.Add(num);
            num = 0;
        }
        return answer.ToArray();
    }
}
728x90
반응형
덧칠하기 문제

내 코드
using System;

public class Solution {
    public int solution(int n, int m, int[] section) {
        int answer = 1;
        int paint = section[0] + (m-1);
        for (int i = 0; i < section.Length; i++)
        {
            if (paint < section[i])
            {
                answer++;
                paint = section[i] + (m-1);
            }
        }
        return answer;
    }
}
728x90
반응형

테스트 케이스 추가 시킴

Parameters  : ["..", "##"]  Return : [1, 0, 2, 2]


바탕화면 정리 문제

내 코드
using System;

public class Solution {
    public int[] solution(string[] wallpaper) {
        int[] answer = new int[4];
        bool isFirst = false;
        for (int i = 0; i < wallpaper.Length; i++)
        {
            for (int j = 0; j < wallpaper[i].Length; j++)
            {
                if (wallpaper[i][j] == '#')
                {
                    if (!isFirst)
                    {
                        answer[0] = i;
                        answer[1] = j;
                        answer[2] = i+1;
                        answer[3] = j + 1;
                        isFirst = true;
                    }
                    if(answer[1] > j)
                    {
                        answer[1] = j;
                    }
                    if (answer[0] < i)
                    {
                        answer[2] = i+1;
                    }
                    if (answer[3] < j+1)
                    {
                        answer[3] = j+1;
                    }
                }
            }
        }
        return answer;
    }
}
728x90
반응형

+ Recent posts