ChatGPT 4

BOJ - 1789 수 들의 합

문제 링크 :https://www.acmicpc.net/problem/1789문제 유형 : 그리디 알고리즘문제 풀이 : 서로 다른 N개의 자연수의 합으로 S를 만들어야 한다는 문제고 그리디 알고리즘의 특성을 살려서 풀었다.가장 핵심 아이디어는 1부터 쭉 더했을 때 어느 시점에 S를 넘어갈 것이다. 그 때를 체크해주면 된다. 1) 1부터 계속 더해준다. ex) 1+2+3+4....2) 그러다 S를 초과하는 경우가 발생할 때를 확인한다. ex) S = 15 , 1+2+3+4+5 (O) / 1+2+3+4+5+6 (X) 3) 한 번 씩 더 할 때마다 count를 세주고 만약 2)와 같이 초과하는 경우가 발생 했을 때 이미 count를 한 번 한 상황이니 1을 빼주고 그 count를 출력한다. ex) 6까지 갔을..

BOJ - 16953 A->B

문제 링크 : https://www.acmicpc.net/problem/16953문제 유형 : 그리디 알고리즘문제 풀이 : 핵심 아이디어는 반대로 생각하는 것이다. 즉, A->B가 아닌 B->A로 간다고 생각하자.                1) 마지막에서 2로 나누었을 때 나누어 떨어지는 경우엔 나누기 2를 해줌               2) 일의 자릿수가 1인 경우는 1을 제거풀이 코드 const fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString().split("\n");let [a,b] = input[0].split(" ").map(Number);let count = 0;while(a 2) GPTs 해설 GPT는 BFS의 방..

BOJ - 2839 설탕 배달

문제 링크 : https://www.acmicpc.net/problem/2839문제 유형 : 그리디 알고리즘문제 티어 : 실버4문제 풀이 : 5키로랑 3키로짜리 봉지가 있고 이 두 개를 통해 최대한 적은 갯수의 봉지를 가져가야 한다.  => 5키로로 담을 수 있는 만큼 담고 그 다음 3키로로 채우면 될 것 같은 문제다. 시간 복잡도 : O(N)const fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString().split("\n");let n = Number(input[0]);let count = 0;while(true) { if(n%5===0){ count -= n/5; break; } n-=..

BOJ - 1541 잃어버린 괄호

문제 링크 : https://www.acmicpc.net/problem/1541문제 유형 : 그리디 알고리즘문제 티어: 실버2 문제 풀이1) 최솟값을 찾아야 하기 때문에 일단 "-" 기준으로 수식을 나눈다. 2) ( ) - ( ) 기준으로 나왔을 때 무조건 뒷 괄호를 크게 만들어놓고 앞 괄호에서 뒷 괄호를 빼는게 제일 최솟값일 것이다. 3) 만약 - 기준으로 나눴을 때 +로 묶인 부분이 있으면 더해주어야 한다.4) 첫 번째 괄호는 그냥 더해주고 두 번째 괄호부터는 다 빼주는게 제일 최솟값일 것이다(이미 -로 구분 지었고 첫 번째는 숫자로 시작 즉, + 이기 때문에 더해줘야 함)const fs = require("fs");let input = fs.readFileSync("/dev/stdin").toStr..