일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Set
- Pipeline
- cloud
- Collection
- 캐시서버
- map
- container
- Jenkins
- STREAM
- 액세스회선
- mybatis
- AOP
- 허브
- Java
- DevOps
- JPA
- LAN어댑터
- Spring
- 방화벽
- ansible
- Linux
- sonarQube
- 라우터
- IntelliJ
- tomcat
- docker
- gradle
- 소켓
- jdk
- post
- Today
- Total
목록코딩 테스트 시 알면 좋은 것들 (16)
거북이-https://velog.io/@violet_evgadn 이전완료
코딩 테스트 시 필요한 이유 코딩 테스트 때 무조건 나오는 문제를 하나 고르라면 "문자열 문제"일 것이다.문자열 문제를 풀다 보면 마지막 Index부터 알고리즘 짜는 게 쉬워 역순으로 답을 구하고 구해진 답을 거꾸로 뒤집는 과정이 필요한 문제들이 몇 개 있었다. 이때 항상 "s.reverse()"라는 명령을 쓴다고 생각하고 사용하지만 Java에는 이런 명령이 존재하지 않는다.그래서 문자열을 뒤집을 때마다 항상 구글링을 해서 방법을 찾았는데, 문자열 문제는 항상 나오는 문제니 이번 기회에 정리해보기로 했다. StringBuilder 사용 String str = "sample"; StringBuilder sb = new StringBuilder(str); String reverse = sb.reverse()..
코딩 테스트 시 필요한 이유 코딩 테스트에 항상 나오는 문제가 있다. "~기준으로 정렬하여 반환하시오" 이런 경우 Arrays.sort()나 Collections.sort()의 기본적인 정렬 Rule인 Primitive Class(or Wrapper Class) 오름차순 정렬을 사용하면 참 좋겠지만 코딩 테스트에는 이런 날먹을 막기 위해 대부분 정렬 특수 조건을 추가한다. "A 기준으로 정렬하고, A가 같다면 B 기준으로 정렬하십시오" "A 기준으로 내림차순 정렬하십시오" 결국 이를 위해선 Java의 Compare 관련 메서드 및 인터페이스에 대해 알고 있어야 한다. 이전에 Stream을 공부할 때 sorted()를 사용하며 Comparator Interface를 람다식으로 잠시 사용한 적이 있었는데, ..
코딩 테스트 시 필요한 이유 사실 코딩 테스트 때 로그는 그렇게까지 중요도가 높지는 않다. 즉, 사용하지 않아도 문제를 풀 수 있다. 하지만 필자는 자릿수를 구하는 문제이거나 규칙을 가진 상황에서 특정 값의 Index를 구하는 종류의 문제들은 주로 log를 활용한다. 굳이 이렇게 풀지 않아도 되지만 수학을 좋아했던 예전 기억이 남아 있어서 이런 게 아닐까 싶다. 어차피 활용할 거 제대로 한 번 정리해보자고 결정했고, 이왕 정리하는 거 log의 반대 성질을 가진 거듭제곱까지 한 번에 정리하기로 하였다. Math.log Java에서 log를 사용하는 방법은 총 3가지 존재한다. 밑이 e(자연 상수)인 ln(x) 값을 반환하는 Math.log(x), 밑이 10인 log(x) 값을 반환하는 Math.log10(..
코딩 테스트 시 필요한 이유 처음에는 진법으로 변환하는 메서드가 너무 간단하기도 하고 나누기를 통해 N진법 수로 변환하는 함수를 만들면 된다고 생각해 정리할 필요 없다고 생각하였다. 그런데 생각보다 코딩 문제에 "N진법으로 바꾸는 문제"가 많았다. 이때마다 N진법을 만드는 방법을 검색하는 것도 귀찮았고 한 번 정리해놔야 다음에는 검색하지 않고서도 사용할 수 있기에 한 번 정리하도록 하겠다. int형 데이터 N진법으로 표현 Integer.toString(int i, int radix) // 숫자 i를 radix진법으로 변환 int형 데이터를 N진법으로 변환하는 방법은 이미 Java 내에 구현되어 있다. 물론 Integer.toBinaryString(), Integer.toHexString() 같은 특정 진..
코딩 테스트 시 필요한 이유 Java로 코딩 테스트를 준비하다 보면 분명 로직이 정확한 것 같은데 답이 틀리는 경우가 있다. 심지어 반 이상은 맞는 상황이 다수인지라 더욱 미쳐버릴 것 같다. 이런 경우 10번 중 7-8번은 Int와 Long의 범위 차이 때문에 생기는 에러였다. 코딩 테스트에서 int형 데이터로 Input이 들어오고 Output 또한 int형 데이터라면 대부분 형 변환을 수행하지 않고 코딩한다. 하지만 (int 데이터) * (int 데이터)의 결과가 int 범위를 넘어가는 경우가 존재한다. 이 경우 Overflow 문제가 발생하는데 Java는 이 상황에서 에러를 발생시키는 것이 아닌 이상한 중간 결과를 반환한다. 당연히 중간 연산 결과가 틀리니 답 또한 제대로 반환되지 않는 것이다. 이유..
코딩 테스트 시 필요한 이유 모든 코딩 테스트를 보면 왜인지는 모르겠지만 답을 배열(int[], String[] 등)로 반환하라고 하는 경우가 많다. 하지만 개인적으로는 선언 시 미리 Size를 정해줘야 하는 배열보다는 Size 걱정 없이 데이터를 저장할 수 있는 Collection을 더 많이 활용하게 된다. 물론 Collection을 for문이나 for each문을 통해 모든 데이터를 순회하며 배열에 값을 넣어줘도 될 것이다. (실제로 필자는 예전에 이런 방식으로 배열을 만들었다) 하지만 Stream을 사용한다면 데이터 순회에 걸리는 실행 시간을 조금이라도 줄일 수 있지 않을까 생각하여 정리해 보았다. Collection to Array ◎ int가 아닌 Data Type → int String s :..