코딩 테스트/TIP
[코딩테스트] 2차원배열 회전하기
코딩테스트 문제를 풀다보면 2차원 배열을 조작하는 경우가 굉장히 많은 것 같다. (맵을 상하좌우로 기울여라, 지도를 회전하라 등등..) 최근에 푼 2020 KAKAO BLIND RECRUITMENT 기출문제중 자물쇠와 열쇠라는 문제가 있는데 여기서 2차원배열을 90, 180, 270, 360 도 회전시켜야 하는 코드가 필요하다. 배열의 인덱스를 이용해서 N도 회전했을 때 각 자리에 바뀌는 값들을 구해야 하는데 꾀나 번거로웠다. 다음에 또 구해야 한다면 할 수는 있겠지만 매번 시간을 굉장히 많이 잡아먹을 것 같아서 블로그에 정리해두려고 한다. 다음과 같은 2차원 배열이 있다고 하자. 먼저 배열을 시계방향으로 90도 회전시키면 배열이 다음과 같이 값이 바뀐다. 그리고 다음은 시계방향으로 180도 회전한 모습..
[JAVA] 날짜, 시간 계산 총 정리
1. 날짜 원하는 형식으로 출력하기 // 날짜 초 소숫점까지 나타내기. Date date = new Date(); SimpleDateFormat simpleDateFormat1 = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss.SSS"); // 초 소숫점 세자리까지 나타내기 System.out.println(simpleDateFormat1.format(date)); SimpleDateFormat simpleDateFormat2 = new SimpleDateFormat("yyyy-MM-dd hh:mm"); System.out.println(simpleDateFormat2.format(date)); // 2020-11-24 01:12:55.219 2020-11-24 01:12 2..
[JAVA] 10진수 n진수로 변환하기
10진수를 2진수로 변환하는 방법은 많이 알고들 있을 것이다. 10진수를 계속해서 2로 나누다가 몫이 0이 되면 그동안 나왔던 나머지들을 역순으로 나열하면 된다. 예를 들어 16을 2진수로 변환하는 방법은 다음과 같으며 2진수로 변환한 값은 10000(2)다. 그럼 8진수, 16진수 등 N진수들은 ? 방법은 똑같다. 대신 2진수는 계속 2로 나눠주었다면, n진수는 n으로 계속 나눠주면 된다. 1. 10진수 --> 8진수 10진수 126를 8진수로 변환해보자. 처음 126을 8로 나눈 몫은 15, 나머지는 6이다. 그 다음 위에서 나온 몫 15를 다시 8로 나누면 나머지가 7이고 몫이 0일때 나머지는 역순으로 나열한 176(8)이 126을 8진수로 변환한 값이다. ∴ 126(10) --> 176(8) 2...
[JAVA] 문자열이 영어로만 이루어져 있는지 판별하기(Pattern.mathces())
문자열이 알파벳으로만 이루어져있는지 확인할 때 사용한다. 숫자, 한글, 특수문자 등이 한글자라도 섞여있으면 false를 반환한다. import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String s1 = "chocholog"; System.out.println(Pattern.matches("^[a-zA-Z]*$", s1)); String s2 = "chocho_log"; System.out.println(Pattern.matches("^[a-zA-Z]*$", s2)); } // true false
[JAVA] 아스키(ASCII) 코드 값 구하기
코딩 테스트 연습을 하다보면 종종 아스키 코드 값을 이용하는 경우가 생긴다. 실무에서는 써본적이 없어서 잘 모르겠다. 필요 할 때마다 매번 구글링을 하니 귀찮고 완전히 내것이 되는 것 같지가 않다. 그래서 이번엔 JAVA로 아스키 코드 구하는 법을 정리해보려고 한다. 아스키 코드표 1. 문자 --> 아스키 코드 public static void main(String[] args) { // 문자 --> 아스키 코드 char c = 'A'; System.out.println((int)c); boolean isSame = c==65 ? true : false; System.out.println(isSame); } // 65 true 2. 아스키 코드 --> 문자 public static void main(St..
[JAVA] 최대 공약수(GCD), 최소 공배수(LCM) 구하기
최대 공약수 구하는 방법 1. 숫자가 2개인 경우 1) 두 수를 공약수로 계속 나눈다. 2) 공약수로 나눈 몫이 서로소가 되면 stop 3) 왼쪽 공약수를 모두 곱한다. ∴ 60 과 48의 최대 공약수 : 2 ✕ 2 ✕ 3 = 12 2. 숫자가 3개 이상인 경우 - 코드에서 배열이 매개변수로 주어지는 경우 1. 모든 수를 동시에 반드시 나눌수 있는 수로 나눈다. 2. 더이상 동시에 나눌 수 없으면 stop 3. 왼쪽 공약수를 모두 곱한다. ∴ 60, 48, 40 의 최대공약수 : 2 ✕ 2 = 4 최소 공배수 구하는 방법 1. 숫자가 2개인 경우 1) 두 수의 공약수로 나눈 몫이 서로소가 될 때까지 나눈다. 2) 왼쪽 공약수들과 아래 서로소까지 모두 곱한다. ∴ 60 과 48의 최소 공배수 : 2 ✕ 2..