브론즈 5 문제부터 시작해서 차례 차례 단계를 높여가며 알고리즘 공부를 다시 본격적으로 시작할 계획이다 오늘은 그 첫문제로 4434 평균은 넘겠지를 풀어보았다 # 백준 4434 평균은 넘겠지[브론즈 1] # 풀이 과정 우선 처음에는 평균보다 크거나 같은 것으로 구해서 답이 계속 이상하게 나왔다 평균 초과인 학생만 구하는 것이었다 그리고 숫자 타입을 어떤 것을 쓰느냐가 이 문제를 해결하는데 중요한 요소였다 처음에는 정답만 double형으로 선언하고 나머지는 int로 선언했더니 계속 답이 0.0% 가 나와서 조금 헤맸다 그리고 소수점 셋째 자리를 출력하는 방법을 알고 있어야 하는 문제다 # 자바 소수점 원하는 자리만큼 출력하는 방법 1. System.out.ptrintf() 사용 2. String.forma..
알고리즘/BeakJoon
백준 브론즈 1 단계 문제이다 알고리즘 공부를 다시 시작하면서 자바와 자바스크립트로 둘 다 문제 푸는 연습을 하기 위해서 일단 익숙한 자바로 문제 풀이를 한 후에 자바스크립트로 바꾸는 연습을 하려고 한다 일단 자바로 문제를 해결한 코드를 올려보겠다 # 문제 해결 방법 입력으로 주어진 String의 앞글자만 따서 해당 글자를 숫자로 바꾸어 배열의 인덱스로 사용한다 입력을 다 마치고 나면 다시 한번 배열을 돌면서 5 이상의 인덱스가 있는지 확인한다 있다면 해당 인덱스를 다시 알파벳으로 변경해서 String에 추가한다 없다면 "PREDAJA" 를 출력한다 # 문제 코드 package BRONZE; import java.util.Scanner; public class Main { public static voi..
자바스크립트로 알고리즘 문제를 해결하는 연습을 해야겠다는 생각에 가장 쉬운 왕초보 문제부터 풀어볼 것이다 그 전까지 알고리즘은 전부 다 자바로 풀었기 때문에 매우 쉬운 문제임에도 자바스크립트로 해결하는게 헷갈린다.. 오늘 처음으로 자바스크립트를 사용한 알고리즘 문제 풀이 연습을 하였고 그 코드를 올려보려고 한다 A와 B의 값을 입력받아 더해서 출력만 하면 되는 문제이다 자바스크립트를 사용해서 백준 문제를 풀 때에는 초반에 세팅 코드가 몇줄 필요하다 구글링을 통해서 세팅 코드를 보고 적용해보았다 아래는 정답 코드이다 const fs = require('fs'); const inputData = fs.readFileSync(0, 'utf8').toString().split(' '); const A = par..
N개의 카드 중 3개를 뽑는 조합을 구하는데 이때 M보다 작거나 같은 애들만 list에 추가하고 list를 정렬한 후 가장 뒤에 있는 값을 출력하니 쉽게 풀렸다. 코드에 주석을 달아놓았다. package Beakjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.nio.Buffer; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.StringTokenizer; public class Main_2798 { /* N장의 카드 중 M과 가장..
int 형식을 string으로 합쳐서 비교하는 dfs+백트래킹 문제였다. 형변환만 잘 해주면 어렵지 않은 문제이다. 코드에 주석을 자세하게 달아놓았다. package Beakjoon; import java.io.*; import java.util.*; public class Main_2210 { /* 백트래킹 + 조합 문제 5*5 숫자판 0-9 사이의 숫자로 채워져있음 인접한 네방향으로 움직이면서 6자리 숫자 만들기 한번 거쳤던 칸 다시 갈 수 있으며 0으로 시작하는 숫자도 가능 */ //dfs + 백트래킹 //모든 크기의 위치에 대해서 모두 확인 //int + "" -> String으로 변환 //contains를 사용하여 list에 있는지 확인 //서로 다른 여섯자리 수들의 개수를 구하기 static ..
구간합 개념을 제대로 잡을 수 있는 문제였다. i부터 j 까지의 누적합을 구할 때는 처음부터 배열에 더한 값을 저장해놓으면 금방 구할 수 있다. 코드에 주석을 자세하게 달아놓았다. package Beakjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class Main_11659 { /* N개의 수가 주어졌을 때 i~j 까지의 합을 구하기 누적합 문제 -> 앞에서부터 애초에 더한 다음 배열에 저장하자 */ stati..
투포인터의 개념을 잡을 수 있는 문제였다. 투포인터만 제대로 알면 금방 풀 수 있는 문제다. 코드에 주석을 자세하게 달아놓았다. package Beakjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main_2003 { /* 주어진 수열에서 i~j 까지 더했을 떼 M이 되는 경우의 수를 구해야 함 */ //투포인터 로직 제대로 알고 넘어가기 static int N, M; //숫자의 개수, 더해서 되어야 하는 숫자 static int [] arr; //수열을 넣어줄 배열 public static ..
푸는데 굉장히 오래 걸린 문제다. DFS로 풀어보려고 했는데 십자모양이나 다른 예외들을 확인할 수 없어서 조합 + BFS로 풀었다. 25개 중 7개를 뽑고 순열 배열에 담고 방문확인하는 과정이 어려웠다. char 입력을 int 좌표값으로 바꾸고 그 좌표값에 맞춰서 확인하는 과정을 다시 연습해봐야겠다. 코드에 주석을 자세하게 달아놓았다. package Beakjoon; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; public class Main_1941 { /* 25명의 여학생 고정 이다솜파 ..