전체 글 115

[그리디] 백준-1744 수 묶기 골드4 (Java)

백준-1744 : 수 묶기 https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 아이디어 1을 제외한 양수는 큰수끼리 곱하면 커진다. 1은 더 해준다. 음수 * 음수는 양수이고 작은 음수끼리 곱하면 커진다. 풀이 아래 조건에 따라 우선순위 큐에 넣어준다. 1은 결과에 더해준다. 1보다큰 값끼리 우선순위큐에 넣어준다. 1보다 작은값 끼리 우선순위 큐에 넣어준다. 우선순위 큐에 2개 이상 존재할때 곱하여 결과에 더해주고 1개의 경우에는 꺼내서 더해준다..

Algorithm 2023.04.04

[Effective TypeScript] item52 테스팅 타입의 함정에 주의하기

item52 테스팅 타입의 함정에 주의하기 유의점 1 : 반환값에 대한 테스트를 진행하지 않는다. 실행에서 오류가 발생하지 않는지만 체크한다. const square = (x: number) => x * x; // 실행에서 오류가 발생하지 않는지만 체크한다. test("square a number", () => { square(1); square(2); }); 해결책 반환 타입을 지정해 준다. declare function map(array: U[], fn: (u: U) => V): V[]; const lengths: number[] = map(["john", "paul"], (name) => name.length); // 불필요한 변수를 선언해야한다. // 불필요한 변수를 선언안해도 되는 개선된 코드 ..

Typescript 2023.04.04

[Effective TypeScript] item51 의존성 분리를 위해 미러 타입 사용하기

item51 의존성 분리를 위해 미러 타입 사용하기 미러링 작성중인 라이브러리가 의존하는 라이브러리의 구현과 무관하게 타입에만 의존한다면, 필요한 선언부만 추출하여 작성 중인 라이브러리에 넣는것 미러링을 사용하지 않은 CSV 파일 파싱 라이브러리 // Buffer Type은 NodeJs 타입 선언 설치해서 얻을수있음 // npm install --save-dev @types/node function parseCSV(contents: string | Buffer): {[column: string]: string}[] { if (typeof contents === 'object') { // 버퍼인 경우 return parseCSV(contents.toString('utf8')); } ... } 해당 파일 파..

Typescript 2023.04.04

[그리디] 백준-1715 카드 정렬하기 골드4 (Java)

백준 1715번 : 카드 정렬하기 https://www.acmicpc.net/problem/1715 1715번: 카드 정렬하기 정렬된 두 묶음의 숫자 카드가 있다고 하자. 각 묶음의 카드의 수를 A, B라 하면 보통 두 묶음을 합쳐서 하나로 만드는 데에는 A+B 번의 비교를 해야 한다. 이를테면, 20장의 숫자 카드 묶음과 30장 www.acmicpc.net 풀이 입력받은 값을 우선 순위 큐에 넣는다. (정렬을 하기 위해) 우선 순위 큐에 2개 이상 존재할 때 두개를 꺼내서 합한 이후에 다시 우선순위 큐에 넣는 것을 반복한다. 코드 (java) import java.util.*; public class Baejoon1715 { public static void main(String[] args) { Sc..

Algorithm 2023.04.02

[그리디] 백준-1439 뒤집기 실버5 (Java)

백준 1439번 : 뒤집기 https://www.acmicpc.net/problem/1439 1439번: 뒤집기 다솜이는 0과 1로만 이루어진 문자열 S를 가지고 있다. 다솜이는 이 문자열 S에 있는 모든 숫자를 전부 같게 만들려고 한다. 다솜이가 할 수 있는 행동은 S에서 연속된 하나 이상의 숫자를 잡고 모 www.acmicpc.net 풀이 앞 숫자와 비교하여 변화한 수 체크 변화 한 수의 절반의 올림 값 만큼 변화가 필요함 코드 (java) import java.util.*; public class BaeJoon1439 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String num = sc.nextLi..

Algorithm 2023.04.02