본문 바로가기

공부/TIL

코딩 테스트 치트리스트

코딩 테스트를 경험하다 보면, 시간이 부족함을 느끼는 경우가 많습니다. 실력적인 부분도 있겠지만

알고리즘을 짜내더라도 구현 시간에 코드를 작성하면서 시간이 소모되는 경우도 많은데요.

 

알고리즘을 짜는시간을 줄이는 건 평소에 학습이겠지만, 테스트에서 구현하는 데에 자주 사용되는 코드들이 있습니다

주력 언어는 자바스크립트이며 코딩 테스트 때 옆에다 펴두고 사용한다면 구현 시간을 많이 줄일 수 있습니다.

 

개발자들은 반복을 제거하는 직업이기도 하죠.

 

배열의 내용 정렬

array.sort(function(a,b){

     return a-b; 

}

 

오름차순

 

array.sort(function(a, b){
     return b-a;
}

내림차순

 


 

배열의 중복제거

 

[... new Set(array)];

 

배열 연장

array.concat(a) [..., a]

array.concat(a, [b]) [..., a, [b]]

 

문자열로 변경

 

[1,2,3]. toString() '1,2,3'

 

배열 원소들의 합, 곱, 원소중 가장 큰 값 (reduce)

 

const sum = array.reduce((x, y) => x+y, 0)

const mul = array.reduce((x,y) => x*y, 0)

const max = array.reduce((x,y) => x> y?  x : y, 0)

 

원소중 특별한 값 찾기

 

const array = [1,0,1,2]



array.indexOf(0) = 1

array.lastindexOf(2)

 

뒤에서부터 찾되, 특정값 찾기 특정값의 인덱스가 나옴

 

배열의 원소를 객체화하여 키, 값으로 개수 새기

 

const array = ['apple', 'apple', 'banana', 'banana', 'mango', 'kiwi', 'apple', 'van', 'mango', 'kiwi', 'apple', 'van', 'apple', 'banana' ];

const object = array.reduce((a,b) =>{
	if (!a[b]) {
    a[b] = 0;
    }
    a[b]++;
    return a;
},{});

 

object  {apple:5, banana: 3 mango:2, kiwi:2, van:2}

 

 

배열 내 같은 원소의 인덱스 찾기

const arr = [1, 1, '1', 1];

let fromIndex = arr.indexOf(1);
while(fromIndex != -1)  {
  console.log(fromIndex); // 0,1,3
  fromIndex = arr.indexOf(1, fromIndex+1);
}

 

 

 

배열을 반복문 돌리는 방법에는 for 문부터 고차 함수까지 다양한 방법이 존재하지만,

'배열'자료구조에서는 for 문이 forEach 문보다 속도가 빠르다는 것을 console API의 time 메서드를 통해 알게 되었는데,

코드를 짧게 쓰기 위해 성능을 포기하고 있었다는 사실을 깨달았습니다.

 

 

객체의 값으로 key찾기

function getKeyByValue(obj, val) {
	return Object.keys(obj).find(key => obj[key] === val);
}

 

 

문자열 내 같은 문자 찾기

 

const str = "big black bug bit a big black dog on his big black nose";
const findDuplicateWords = str => {
   const strArr = str.split(" ");
   const res = [];
   for(let i = 0; i < strArr.length; i++){
      if(strArr.indexOf(strArr[i]) !== strArr.lastIndexOf(strArr[i])){
         if(!res.includes(strArr[i])){
            res.push(strArr[i]);
         };
      };
   };
   return res.join(" ");
};
console.log(findDuplicateWords(str));

 

 


파이썬

입력이

30 10

위와 같이 입력될 때 변수에 나누어 놓기

 

#변수에 정수형으로 받기
a, b, c = map(int, input().split())

# 리스트형태로 받기
arr = list(map(int, input().split()))

 

 

 

참고자료
https://ko.code-paper.com/javascript/examples-find-repeated-words-in-paragrah-a-string-javascript
https://plusratio.tistory.com/97

hianna.tistory.com/404

반응형