Bootcamp/java codingtest 7

프로그래머스 LV2 스택/큐 - 올바른 괄호

문제 설명 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ')' 문자로 닫혀야 한다는 뜻입니다. 예를 들어 "()()" 또는 "(())()" 는 올바른 괄호입니다. ")()(" 또는 "(()(" 는 올바르지 않은 괄호입니다. '(' 또는 ')' 로만 이루어진 문자열 s가 주어졌을 때, 문자열 s가 올바른 괄호이면 true를 return 하고, 올바르지 않은 괄호이면 false를 return 하는 solution 함수를 완성해 주세요. 제한사항 문자열 s의 길이 : 100,000 이하의 자연수 문자열 s는 '(' 또는 ')' 로만 이루어져 있습니다.입출력 예sanswer"()()"true"(())()"true")()("false"(()("false 문제풀이 구조 생각-"(" 하나가..

최소 신장 트리 MST

최소 신장 트리 를 구현하기 위해서 Java에서는 Kruskal 알고리즘을 사용한다고 합니다.문제풀다가 이게 뭐지.. 싶어서 최소 신장 트리는 들어봤는데 코드로 구현하는 건 역시.. 또 다른 문제입니다.아래 그림이 전체 과정을 설명해준다고 해요.edge 선언 및 초기화 -> 목표값에 따른 오름차순 배열 -> Union-Find -> 간선 선택 및 사이클 체크 -> 결과값 확인이것도 몇 번 직접 구현해봐야 익숙해질 것 같습니다. for 문으로는 한계가 있더라구요 ; Kruskal 알고리즘최소 신장 트리를 찾기 위해 간선들을 오름차순 정렬하고,서로소 집합(Union-Find)으로 사이클이 생기지 않도록 간선을 추가하는 방식 ✅ 1. Kruskal 알고리즘이란?✅ 개념:그래프에서 사이클이 없고, 모든 노드를 ..

동적 계획법, JAVA 자료형

프로그래밍 기법동적 계획법 Dynamic Programming재귀로 구현하게 되면, 중복해서 하는 연산이 불필요하게 많아진다.피보나치 수열 같은 경우에 재귀 형태로 구현해주게 되면은..public static long fibo(int n) { if (n == 0 || n == 1) return n; return fibo(n-1) + fibo(n-2); }n에 8을 입력했을 때, fibo(7), fibo(6) 이 호출되고,각 함수 결과값을 구하기 위해 다시 fibo(6), fibo(5) / fibo(5), fibo(4) 가 호출된다.여기서는 fibo(5) 가 중복해서 호출되는데, 값이 커질수록 이는 기하급수적으로 늘어날 것.=> 이를 해결해주기 위해서 동적 계획법을 사용, 중간 계산값을 다른 배열..

BigDecimal, Comparator 인터페이스

BigDecimal result = numor.divide(denom, times, RoundingMode.HALF_UP); return result;고정소수점과 부동소수점의 차이소수점 위치고정됨가변적정확도정밀 (오차 거의 없음)오차 가능 (예: 0.1 + 0.2 ≠ 0.3)속도빠름 (정수 연산 기반)매우 빠름 (CPU 부동소수점 연산)사용처금융 계산과학/통계/그래픽 계산Java 예시BigDecimalfloat, double기존 float, double 을 통해서 소수점을 표현하면 최대 16자리까지만 표현이 가능.BigDecimal 을 사용하면 원하는 만큼의 자리수를 표현이 가능하다.RoundingMode. 옵션들UP무조건 올림 (자리 버림 이후 0 아니면)2.68DOWN무조건 버림2.67H..

문자열 리스트, array

list.get(index) : 값 포함여부 체크str.equals() : 문자열이 비교하는 값과 동일한지 확인array.replaceAll(string a, string b) : a를 b로 모두 대체  string.trim().split("\\s+") : 하나 이상의 공백을 기준으로 문자열을 나눔int count3 = (string.trim().isEmpty()) ? 0 : array.length; : 입력이 공백이라면 0을 반환, 아니라면 배열의 길이를 반환python에서는 그냥 아무 생각없이 형변환 이나 데이터 관련해서 민감하게 생각안해도 코드가 쑥쑥 나오는데..왜 java는 데이터 형 변환이니 클래스니 메서드니 신경써줘야 할게 이렇게 많은지그래서 개발자들이 많이 쓰는가..?

BigInteger, array 정렬

BigInteger-Java에서 매우 큰 정수를 다루기 위해 제공되는 클래스-java.math 패키지에서 BigInteger 클래스를 제공-이론적으로 메모리가 허용하는 한 무한대의 정수 다룰 수 있음 ​BigInteger의 특징-불변성(Immutable): BigInteger 객체는 한 번 생성되면 그 값을 변경할 수 없음, 연산 결과는 새로운 BigInteger 객체로 반환-다양한 연산 지원: 사칙연산뿐만 아니라 모듈러 연산, 비트 연산 등 다양한 연산을 지원 1. 선언 및 초기화import java.math.BigInteger;BigInteger bigNumber = new BigInteger("12345678901234567890");// long 값 기반 생성, valueOf 메서드 사용BigIn..