반응형
오늘의 문제는 빨강 하양 파랑의 3색을 순서대로 소팅하기.
아래 두 가지 추가 요건이 있었다.
- sort함수를 쓰지 않고 풀 수 있는가?
- 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++;
}
}
}
먼저 문제를 풀기 위해 어떤 방법이 있을지 고민해보았다.
- 각 배열요소의 값을 비교하여 더 작은 것을 앞으로 뺀다.
- 배열요소의 값이 0이면 맨 앞으로, 2면 맨 뒤로 뺀다.
- 배열의 길이가 1이면 그대로 리턴한다.
- 0, 1, 2에 해당하는 배열을 각각 만들어 for문을 돌린 후 해당하는 배열에 넣고 추후 합친다.
- 0, 1, 2에 해당하는 배열요소의 개수를 세서 새 배열을 만들어준다 --> 이 방법으로 풀었음
아래는 어제 구글밋 스터디에서 들은 코딩테스트를 위한 조언들이다.
- 제한시간 30분 내에 풀기, 푸는 동안 구글링 금지
- for문 바운더리 중요함, import나 오타같은 건 그리 중요하지 않음.
- 못 풀었을 때 일단 수도코드로 적어보고 구글링을 많~이 한다.
- 그리고 코드를 머리속에서 돌려본 뒤에 돌아갈 것 같으면 돌려보기.
그리고 키워드들
#redis #cache #LRUCache #NOSQL #jenkins #deploy #docker #LINUX
리뷰에서 받은 링크 - switch와 if else중 어떤 것을 써야 하는가?
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 |