TIL/Coding Test

[LeetCode] Sort Colors

반응형

오늘의 문제는 빨강 하양 파랑의 3색을 순서대로 소팅하기. 

 

Explore - LeetCode

LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore.

leetcode.com

아래 두 가지 추가 요건이 있었다.

  1. sort함수를 쓰지 않고 풀 수 있는가?
  2. O(1)로 풀 수 있는가?
public class cote0305_sort_color {
    /*
    Given an array nums with n objects colored red, white, or blue, sort them in-place so that objects of the same color are adjacent,
    with the colors in the order red, white, and blue.
    We will use the integers 0, 1, and 2 to represent the color red, white, and blue, respectively.
    
    조건
    1. 컬러배열의 최대 길이는 300이다 
    2. 컬러배열의 값은 0, 1, 2중 하나다.    
    
    example
    input [2,0,2,1,1,0]
    output [0,0,1,1,2,2]
    */ 

    public void sortColors(int[] nums) {
        int zero=0;
        int one=0;
        int two=0;
        
        for(int i=0; i<nums.length; i++){
            if(nums[i]==0){
                zero++;
            }else if(nums[i]==1){
                one++;
            }else if(nums[i]==2){
                two++;
            }
        }
        int idx=0;
        for(int i=0; i<zero; i++){
            nums[idx]=0;
            idx++;
        }
        for(int i=0; i<one; i++){
            nums[idx]=1;
            idx++;
        }
        for(int i=0; i<two; i++){
            nums[idx]=2;
            idx++;
        }
    }
}

먼저 문제를 풀기 위해 어떤 방법이 있을지 고민해보았다.

  1. 각 배열요소의 값을 비교하여 더 작은 것을 앞으로 뺀다.
  2. 배열요소의 값이 0이면 맨 앞으로, 2면 맨 뒤로 뺀다.
  3. 배열의 길이가 1이면 그대로 리턴한다.
  4. 0, 1, 2에 해당하는 배열을 각각 만들어 for문을 돌린 후 해당하는 배열에 넣고 추후 합친다.
  5. 0, 1, 2에 해당하는 배열요소의 개수를 세서 새 배열을 만들어준다 --> 이 방법으로 풀었음

 

아래는 어제 구글밋 스터디에서 들은 코딩테스트를 위한 조언들이다.

  • 제한시간 30분 내에 풀기, 푸는 동안 구글링 금지
  • for문 바운더리 중요함, import나 오타같은 건 그리 중요하지 않음. 
  • 못 풀었을 때 일단 수도코드로 적어보고 구글링을 많~이 한다.
  • 그리고 코드를 머리속에서 돌려본 뒤에 돌아갈 것 같으면 돌려보기.

그리고 키워드들

#redis #cache #LRUCache #NOSQL #jenkins #deploy #docker #LINUX

 

리뷰에서 받은 링크 - switch와 if else중 어떤 것을 써야 하는가?

 

switch와 if else 중 어떤 것을 써야하는가?

switch와 if else 중 어떤 것을 써야하는가? switch구문은 변수를 입력 받아 미리 정해놓은 여러 값들과의 일치여부를 판단하여 switch문 내의 control flow를 결정한다. if else구문은 boolean의 결과 값을 내

aahc.tistory.com

 

728x90
반응형

'TIL > Coding Test' 카테고리의 다른 글

[LeetCode] Binary Tree Inorder Traversal  (2) 2021.03.10
[LeetCode] Reverse String  (0) 2021.03.09
[LeetCode] Divisor Game  (0) 2021.03.09
[LeetCode] Fibonacci Number  (2) 2021.03.08
[LeetCode] Make the string great  (0) 2021.03.04