반응형

 

 

 

 

 

풀이코드

public class Solution {
    public string solution(string s) {
        char[] charArr = s.ToLower().ToCharArray();
        charArr[0] = char.ToUpper(charArr[0]);
        for(int i = 1; i < charArr.Length; i++)
        {
            if(charArr[i - 1] == ' ')
            {
                charArr[i] = char.ToUpper(charArr[i]);
            }
        }
        string answer = string.Join(string.Empty, charArr);
        return answer;
    }
}
  • 문자열을 모두 소문자로 변경한뒤 Char 배열로 변환한다.
  • 첫번째 Char값의 경우, 반복문에서 따로 체크를 안하기때문에 반복문 전에 첫번째 Char값을 대문자 변환을 시도한다. (어차피 숫자는 ToUpper(), ToLower()로 값이 변경되지 않으므로 굳이 조건문을 추가하지 않는다.)
  • 나머지 값들에 대해 반복문을 돌리면서 단어 앞에 공백이 있으면 해당 i번째 Char 값을 대문자로 변경한다.

 

 

 

기타

- string.Join() : 배열을 string으로 묶는 기능

 

String.Join 메서드 (System)

각 요소 또는 멤버 사이에 지정된 구분 기호를 사용하여 지정된 배열 요소나 컬렉션 멤버를 연결합니다.

learn.microsoft.com

 

 

 

 

 

 

반응형

'Stack > Coding test' 카테고리의 다른 글

[C# / Lv2] 이진 변환 반복하기  (0) 2022.10.07
[C# / Lv2] 최솟값 만들기  (0) 2022.10.07
[C# / Lv2] 최댓값과 최솟값  (0) 2022.10.07
[C++ / Lv2] 더 맵게  (0) 2022.03.03
[C# / Lv2] 주식 가격  (0) 2022.02.26
반응형

 

 

 

 

풀이코드

using System;

public class Solution {
    public string solution(string s) {
        int[] intArr = Array.ConvertAll(s.Split(" "), item => int.Parse(item));
        Array.Sort(intArr);
        string answer = $"{intArr[0]} {intArr[intArr.Length - 1]}";
        return answer;
    }
}
  • 문자열 안의 숫자들이 공백을 기준으로 나뉘어져 있으므로 Split으로 나눠준 뒤, int로 파싱한다.
  • 그렇게 만들어진 배열을 정렬한 뒤, 첫번째 값과 마지막 값을 출력해주면 끝

 

 

 

 

 

반응형

'Stack > Coding test' 카테고리의 다른 글

[C# / Lv2] 최솟값 만들기  (0) 2022.10.07
[C# / Lv2] JadenCase 문자열 만들기  (0) 2022.10.07
[C++ / Lv2] 더 맵게  (0) 2022.03.03
[C# / Lv2] 주식 가격  (0) 2022.02.26
[C++ / Lv 2] 다리를 지나는 트럭  (0) 2022.02.26
반응형

 

 

 

 

풀이 코드

#include <string>
#include <vector>
#include <queue>

using namespace std;

#define FAIL -1

int solution(vector<int> scoville, int K) {
    int answer = 0;
    priority_queue<int, vector<int>, greater<int>> pq;
    for(auto it : scoville)
    {
        pq.push(it);
    }

    while(pq.size() > 1 && pq.top() < K)
    {
        int less_1 = pq.top();
        pq.pop();
        int less_2 = pq.top();
        pq.pop();

        int mixScoville = less_1 + less_2 * 2;
        answer++;

        pq.push(mixScoville);
    }

    if(pq.top() < K)
    {
        answer = FAIL;
    }

    return answer;
}

 

 

 

 

기타

- 코드 작성은 쉬웠는데, 제발 테스트 케이스가 조금 많았으면 좋겠다 ㅠㅠ.. (1개는 너무한거 아닌가)

- C#에서는 우선순위 큐를 직접 구현해서 사용했었는데, C++에서는 그냥 제공되서 작성에 편했다.

- 다른 사람 풀이를 보니 아래와 같이 작성해서 for문 돌려서 값을 넣을 필요 없이 바로 값을 넣을 수 있었다.

priority_queue<int,vector<int>,greater<int>> pq (scoville.begin(),scoville.end());

 

 

 

 

 

반응형

'Stack > Coding test' 카테고리의 다른 글

[C# / Lv2] JadenCase 문자열 만들기  (0) 2022.10.07
[C# / Lv2] 최댓값과 최솟값  (0) 2022.10.07
[C# / Lv2] 주식 가격  (0) 2022.02.26
[C++ / Lv 2] 다리를 지나는 트럭  (0) 2022.02.26
[C++ / Lv2] 프린터  (0) 2022.02.15
반응형

 

 

 

 

풀이 코드

using System;
using System.Collections.Generic;

public class Solution {
    public int[] solution(int[] prices) {
        List<int> list = new List<int>(prices.Length);

        for(int i = 0; i < prices.Length; i++)
        {
            list.Add(GetSeconds(prices, i));
        }

        return list.ToArray();
    }

    private int GetSeconds(int[] prices, int startIndex)
    {
        int returnValue = 0;
        for(int j = startIndex + 1; j < prices.Length; j++, returnValue++)
        {
            if(prices[startIndex] > prices[j])
            {
                returnValue++;
                break;
            }
        }

        return returnValue;
    }
}

 

 

 

 

기타

- 이 문제가 왜 스택/큐와 관련이 있는지 잘 모르겠다. 스택을 사용한사람 풀이를 봐도 이걸 이렇게까지 해서 스택을 사용해야 싶기도 하고..

- 바로 직전에 푼 '다리를 지나는 트럭' 문제하고 난이도 차가 너무 나서 풀면서도 의심스러웠다.

- 결국 가독성 좋고, 간단하게 작성하는 법을 선택했는데, 스택/큐에 정신이 사로잡혀서 list를 사용하는 실수를 저질렀다.

- 그냥 배열로 사용해서 'if(prices[startIndex] > prices[j])' 조건문에서 배열 원소에 증가연산자 사용하면 결과 반환할 때, array 변환도 안해도 되고 가독성도 좀 더 올라갔을것 같다. (효율성 테스트에서도 list 사용 여부에 따라 1ms 차이가 났다.)

 

 

 

 

반응형

'Stack > Coding test' 카테고리의 다른 글

[C# / Lv2] 최댓값과 최솟값  (0) 2022.10.07
[C++ / Lv2] 더 맵게  (0) 2022.03.03
[C++ / Lv 2] 다리를 지나는 트럭  (0) 2022.02.26
[C++ / Lv2] 프린터  (0) 2022.02.15
[C++ / Lv2] 기능개발  (0) 2022.02.15
반응형

 

 

 

 

풀이 코드

#include <string>
#include <vector>
#include <queue>

using namespace std;

int solution(int bridge_length, int weight, vector<int> truck_weights) {
    //first : 트럭 무게
    //second : 다리 진입 시간
    queue<pair<int, int>> bridgeQueue;
    int sec = 1;
    int totWeight = 0;

    for(int i = 0; i < truck_weights.size(); i++, sec++)
    {
        if(bridgeQueue.size() != 0)
        {
            //경과시간이 선두 트럭 통과 시간보다 크면 이미 통과한 트럭이므로 디큐
            if(sec >= bridgeQueue.front().second + bridge_length)
            {
                totWeight -= bridgeQueue.front().first;
                bridgeQueue.pop();
            }
			
            //트럭 무게가 다리 하중을 넘으면 선두 트럭을 디큐하고 선두 트럭 기준으로 시간을 다시 계산한다.
            while(weight < truck_weights[i] + totWeight)
            {
                sec = bridgeQueue.front().second + bridge_length;
                totWeight -= bridgeQueue.front().first;
                bridgeQueue.pop();
            }
        }

        bridgeQueue.push(make_pair(truck_weights[i], sec));
        totWeight += truck_weights[i];
    }

    return bridgeQueue.back().second + bridge_length;
}

 

 

 

 

기타

- 이번 문제는 지문이 너무 불친절해서 지문 이해하는데 오래걸렸다. (지문이 이해가 안간다는 말들이 보이는거 보면 내가 한글을 못하는건 아닌거같다..)

 

 

 

 

 

반응형

'Stack > Coding test' 카테고리의 다른 글

[C++ / Lv2] 더 맵게  (0) 2022.03.03
[C# / Lv2] 주식 가격  (0) 2022.02.26
[C++ / Lv2] 프린터  (0) 2022.02.15
[C++ / Lv2] 기능개발  (0) 2022.02.15
[C++ / Lv3] 베스트 앨범  (0) 2022.02.10

+ Recent posts