[프로그래머스, Java] 최대공약수와 최소공배수
·
CodingTest/Programmers
💡풀이class Solution { public int[] solution(int n, int m) { // 유클리드 호제법을 사용하여 최대공약수와 최소공배수를 구하는 방법 int a = Math.max(n, m); int b = Math.min(n, m); while (b > 0) { int temp = a % b; a = b; b = temp; } int gcd = a; // 최대공약수 greatest common divisor int lcm = n * m / gcd; // 최소공배수 least common multiple return ..
[Java] 유클리드 호제법이란?
·
CodingTest/Programmers
1️⃣최대공약수 GCD(Greatest Common Divisor)두 자연수가 공통으로 갖는 약수들 중에서 가장 큰 값ex) 24와 18의 최대공약수는 6 2️⃣최소공배수 LCM(Least Common Multiple)두 자연수들의 배수들 중에서 공통된 가장 작은수ex) 24와 18의 최소공배수는 72 3️⃣유클리드 호제법 (Euclidean Algorithm)유클리드 알고리즘은 2개의 자연수의 최대공약수를 구하는 알고리즘호제법이란 두 수가 서로 상대방 수를 나누어서 결과 값을 얻어내는 알고리즘을 나타낸다. 2개의 자연수 a, b에 대해서 a를 b로 나눈 나머지를 r이라 하면( a%b=r 단, a>b) a와 b의 최대공약수는 b와 r의 최대공약수와 같다. 이 성질에 따라, b를 r로 나눈 나머지 r'를..
[Java, Stack] 왜 Stack이 아닌 Deque로 스택을 구현해야 할까?
·
Backend/Java
Stack 클래스가 상속하고 있는 Vector가 문제가 되기 때문에 Deque 사용을 권장한다. ❌ Stack stack = new Stack();⭕ Deque stack = new ArrayDeque(); Vector는 자바 버전 1부터 있었던 굉장히 오래된 클래스이기 때문에 여러모로 취약점이 많다. 1️⃣Stack은 Vector를 상속받아 구현되어 있다.상속으로 부모 메서드를 공유하기 때문에 Stack을 사용자가 잘못되게 사용할 수 있는 문제가 발생한다.Vector에는 원하는 index에 객체를 끼워 넣을 수 있는 insertElementAt이라는 메서드가 존재한다.문제는 Stack이 Vector를 상속받았기 때문에 insertElementAt 사용이 가능하다는 점이다.후입 선출이 보장되어야 하..
[프로그래머스, Java] 같은 숫자는 싫어
·
CodingTest/Programmers
💡풀이- Stack 사용import java.util.*;public class Solution { public int[] solution(int []arr) { Stack stack = new Stack(); for(int n : arr){ if(stack.isEmpty() || stack.peek() != n){ stack.push(n); } } return stack.stream().mapToInt(Integer::intValue).toArray(); }}💡풀이 2- Stack을 ArrayDeque로 구현import java.util.*;import jav..
[Java] StringTokenizer 란?
·
Backend/Java
1️⃣StringTokenizer이란문자열을 구분자를 이용하여 분리할 때 사용한다.공백 혹은 컴마를 기준으로 문자열을 분리하고 싶을 때, 아니면 특정 문자열을 나누고 싶을 때 StringTokenizer을 사용한다.주로 BufferedReader를 사용할 때 활용한다. 2️⃣생성하는 방식1. 띄어쓰기를 기준으로 문자열을 분리StringTokenizer st = new StringTokenizer(문자열);// StringTokenizer st = new StringTokenizer("aa bb cc");2. 구분자를 기준으로 문자열을 분리StringTokenizer st = new StringTokenizer(문자열, 구분자);// StringTokenizer st = new StringTokenizer..
[Java] BufferedReader, BufferedWriter 란?
·
Backend/Java
0️⃣사용 시 주의사항(1) 클래스를 import해주어야 한다.import java.io.IOException;(2) main 클래스 옆에 throws IOException를 작성한다.public static void main(String[] args) throws IOException {}1️⃣BufferedReader의 특징사용자가 요청할 때마다 데이터를 읽어 오는 것이 아닌 일정한 크기의 데이터를 한번에 읽어와 Buffer에 보관,사용자의 요청이 있을 때 버퍼에서 데이터를 읽어오는 방식대량의 입력 값에 대해 속도가 향상되고 시간 부하가 적다는 장점을 가진다.라인 단위로 입력값의 경계를 인식하기 때문에 공백의 경우에도 String으로 인식한다.입력받은 데이터 타입이 String타입이므로 다른 데이터 ..