본문 바로가기

코딩테스트

(2)
[코딩테스트] 최대공약수, 최소공배수 구하기 (유클리드 호제법) 코딩테스트를 풀다보면 간간히 최대공약수, 최소공배수와 관련된 문제를 찾아볼 수 있다. 수학에 익숙하지 않은 사람이면 '최대공약수', '최소공배수'라는 워딩에서 주는 생소함에 부담을 가질 수도 있다. 하지만 코테 사이트에서 이와 관련된 문제를 꽤나 낮은 난이도의 문제로 취급하고 있는 만큼, 생각보다 어렵지 않은 개념이라 볼 수 있다. 최대공약수(GCD) 구하기 최대공약수는 유클리드 호제법을 이용하여 구할 수 있는데, 이는 큰 수를 작은 수로 나눈 나머지를 반복적으로 취하여 나머지가 0이 될 때 까지 작동하여 구하는 방식이다. 1. 재귀 방식으로 구현 // 재귀 방식 public static int gcd(int a, int b) { if (b == 0) return a; return gcd(b, a % b..
[코딩테스트] label을 이용하여 다중 반복문 탈출하기 백준 2309번 일곱난쟁이 문제를 풀면서 이중 for문을 빠져나오게 코드를 작성해야하는 일이 있었다. 2중 for문 또는 다중 for문을 사용할 때, 안쪽에있는 for문에서 조건에 부합할 때 한번에 상위 for문까지 빠져나오는 법에 대해 머리를 굴려보다 찾아낸 기능이 바로 label이었다. 그래서 오늘은 label에 대해서 소개하고자한다. Label이란 label은 앞서 말한 것과 같이 다중 for문을 사용할 때 안쪽 for문에서 전체 루프를 즉시 종료하거나 다음의 큰 반복문으로 이동할 때 사용할 수 있다. 코드 예제 * 기본형태 outerLoop: // 외부 루프에 레이블 지정 for (int i = 0; i < 10; i++) { for (int j = 0; j < 10; j++) { if (i * ..