본문 바로가기

전체 글1099

[자바] 백준 20205 - 교수님 그림이 깨지는데요? (java) 문제 : boj20205 필요 알고리즘 개념 구현 2중 반복문을 활용해 구현해주면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 NxN 짜리 배열에 0과 1이 있고, 그걸 (N*K)x(N*K) 배열로 늘려주면 된다. 이 때, 자바의 경우 배열 생성 시 기본적으로 0으로 초기화 되므로 0인 경우는 신경쓰지 않아도 된다. NxN 배열에서 1이 입력으로 들어온 경우만 채워주면 되며, (r, c) 위치에 있던 '1'은 (r*.. 2022. 10. 14.
[자바] 프로그래머스 - 호텔 방 배정 (Lv4, Java) 문제 : Programmers-호텔 방 배정 문제 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges 필요 알고리즘 개념 해시를 사용한 집합과 맵 자바의 HashMap을 적절하게 사용할 줄 알아야 한다. 근데 이렇게 알고리즘 분류만 봐서는 아마 풀이를 생각하긴 힘들 것 같다. 구현 난이도보다는 아이디어가 필요한 문제이다. 그룹 관련된 개념(유니온 파인드 등)이 있다면 좀 더 쉽게 생각해낼 수 있어보인다. 생각 과정 (오답) * 제가 풀이를 생각하는 과정이고 오답노트처럼 적어놓은 것이므로, 이하 생각 과정에 나온 알고리즘을 모두 몰라도 문제 푸는데 지장 없습니다. 그냥 바로 풀이만 보시려면 아래쪽에 '풀이'로 넘어가시면 됩니다. 아직 선택되지.. 2022. 10. 13.
[자바] 백준 6220 - Making Change (java) 문제 : boj6220 필요 알고리즘 개념 동적 계획법 (DP; Dynamic Programming) DP로 효율적으로 풀 수 있는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 얼핏 큰 동전부터 최대한 사용하면 가능할 것이라 생각할 수 있다. 예를들어 예시 1의 경우 25, 50, 10, 1, 5원 이므로 큰 동전부터로 정렬하면 50, 25, 10, 5, 1 이다. 차례대로 사용해서 93 - 50원, 43 - 2.. 2022. 10. 13.
[자바] 백준 2921 - 도미노 (java) 문제 : boj2921 필요 알고리즘 개념 구현 규칙을 찾아 2중 반복문으로 구현해주면 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 N=2, 3, 4 일 경우를 그려보면 아래와 같다. 즉, 윗줄을 i로 두고, 아랫줄을 j로 뒀을 때, 아래 코드처럼 2중 반복문을 통해 i와 j를 합계에 더해주면 된다. for (int i = 0; i 2022. 10. 12.
[자바] 백준 25704 - 출석 이벤트 (java) 문제 : boj25704 필요 알고리즘 개념 사칙연산, 수학 뺄셈, 나눗셈을 할 줄 알면 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 코드 설계를 이쁘게 해서 구현만 잘 해주면 된다. 이 때, P는 항상 100의 배수이므로 10%, 25% 할인 쿠폰 적용 후에 int로 변경해줘도 소수점 문제 없이 정수로 떨어지게 된다. 내 경우에 코드를 어떻게 구성했는지는 이하의 주석을 봐보자. int n = Integer... 2022. 10. 11.
[자바] 백준 20353 - Atrium (java) 문제 : boj20353 필요 알고리즘 개념 기하학, 수학 정사각형의 넓이를 어떻게 구하는지 알고 있다면 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 정사각형의 넓이는 한 변의 길이의 제곱으로 구할 수 있다. 한 변의 길이를 x라 한다면 넓이는 x^2이다. 이 문제에서는 넓이가 주어지고, 원하는건 4x 이다. 따라서 '4*sqrt(입력으로 주어진 넓이)'을 출력해주면 된다. 자바에서 제곱근은 Math.sqrt.. 2022. 10. 10.
[자바] 백준 1402 - 아무래도이문제는A번난이도인것같다 (java) 문제 : boj1402 필요 알고리즘 개념 애드 혹(AD HOC) 정형화된 방식이 존재하지 않고 이 문제만의 아이디어를 생각해내야 한다. 이하 애드혹에 대한 위키 내용이다. "이것을 위해" 즉 "특별한 목적을 위해서"라는 뜻의 라틴어로, 일반적으로 다음을 나타낸다. 1. 특정한 문제나 일을 위해 만들어진 관습적인 해결책 2. 일반화할 수 없는 해결책 3. 어떤 다른 목적에 적응시킬 수 없는 해결책 ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 .. 2022. 10. 9.
[자바] 백준 24309 - РАВЕНСТВО (java) 문제 : boj24309 필요 알고리즘 개념 큰 수 표현, 사칙연산 간단한 사칙연산인데 문제는 엄청나게 큰 수로 표현 가능해야한다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 결론적으로는 a,b,c를 입력받은 후 b-c를 a로 나눈 값을 출력해주면 된다(구글번역기 돌리면 bc/a 가 답인 것으로 판단되는데, 실제론 (b-c)/a가 원하는 답이다.). 문제는 c,b가 10^100이라는 어마무시한 수까지 가능하고, a도 10.. 2022. 10. 8.
[자바] 백준 25601 - 자바의 형변환 (java) 문제 : boj25601 필요 알고리즘 개념 그래프 탐색 (bfs, dfs) 그래프 탐색을 할 수 있어야 한다. bfs, dfs 등 해시를 사용한 집합과 맵 String에 대한 간선 표현을 위해 HashMap 등의 자료구조를 사용할 수 있어야 한다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 이게 뭔가 복잡해보일 수 있는데, 결국 그냥 그래프 정점과 간선이 주어지고 특정 지점에서 다른 지점으로 그래프 탐색이 가능하냐고 묻.. 2022. 10. 7.
[자바] 백준 3043 - 장난감 탱크 (java) 문제 : boj3043 필요 알고리즘 개념 그리디 알고리즘 논리적으로 최선의 경우를 만드는 과정을 잘 생각해 규칙을 정하면 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 솔직히 그리디쪽은 티어가 좀 애매한것 같다. 일단 풀이 생각하는 과정은 개인적으로 실버4인 25379번(피하자) 보다 쉬웠다. 다만 구현은 확실히 이 문제가 더 어렵긴 하다. 그렇다고 플래 받을 정도는 아닌 것 같아서 좀 애매한 것 같다. 아무.. 2022. 10. 6.