전체 글1068 [자바] 백준 24263 - 알고리즘 수업 - 알고리즘의 수행 시간 2 (java) 문제 : boj24263 필요 알고리즘 개념 구현 문제에서 제시된 알고리즘 수도코드를 파악할 수 있다면 풀 수 있다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 문제에서 제시된 ManOfPassion의 경우 'for i 2022. 10. 20. [자바] 백준 2083 - 럭비 클럽 (java) 문제 : boj2083 필요 알고리즘 개념 구현 주어진 조건대로 구현하는 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 이 문제에서 중요한 부분은 이름과 두 자연수를 파싱하고, '# 0 0' 까지만 입력을 받고 멈추는 부분이다. 이름과 두 자연수를 각각 name, age, weight 라고 하자. 매번 1줄씩 입력받을 때 마다 name을 출력해주고 한칸 띄운 후, age>17||weight>=80 이라면 'Seni.. 2022. 10. 20. [자바] 프로그래머스 - 종이 자르기 (Lv0, Java) 문제 : Programmers-종이 자르기 문제 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges 필요 알고리즘 개념 수학 수학문제긴한데, 몇 개 공책에 그려보다보면 규칙성은 어렵지 않게 찾을 수 있을 것 같다. '종이를 겹쳐서 자를 수 없습니다.' 부분이 가장 중요한 조건이다. 이게 가능했다면 그리디 알고리즘쪽으로 갔을텐데, 겹쳐서 자를 수 없다고 했으므로 규칙성을 찾아봐야 한다. 아무튼 겹쳐서 자를 수 없으니 결국은 한땀한땀 자를 수 밖에 없다. 아래와 같이 4x3 짜리 종이를 생각해보자. 이걸 우선 가로방향으로 n개로 쪼개보자. 이 경우 n-1번 쪼개면 된다. 그리고 그 중 한 개만 세로방향으로 쪼개보자. m-1번 쪼개면 된다. 그런.. 2022. 10. 19. 생일! 당분간 귤, 스벅, 피자, 치킨, 은단(?), 케잌은 원없이 먹을 수 있을 것 같습니다. 감사합니다! 2022. 10. 19. [자바] 백준 25375 - 아주 간단한 문제 (java) 문제 : boj25375 필요 알고리즘 개념 정수론, 수학 수학적인 추론이 필요한 문제이다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 a, b가 최대 10^18 이므로 당연히 x, y를 직접 찾아낼 순 없다. 그렇다면 수학적인 추론이 필요할 것임을 예측할 수 있다. 수학적으로 매우 약하기 때문에 내 경우엔 우선 간단히 생각해낼 수 있는 부분을 생각해봤다. gcd(x,y) = a 라면 당연히 x와 y는 각각 a로 나누어 .. 2022. 10. 19. [자바] 백준 24075 - 計算 (Calculation) (java) 문제 : boj24075 필요 알고리즘 개념 구현 번역기 돌린 후 문제에서 제시된대로 풀면 된다. ※ 제 코드에서 왜 main 함수에 로직을 직접 작성하지 않았는지, 왜 Scanner를 쓰지 않고 BufferedReader를 사용했는지 등에 대해서는 '자바로 백준 풀 때의 팁 및 주의점' 글을 참고해주세요. 백준을 자바로 풀어보려고 시작하시는 분이나, 백준에서 자바로 풀 때의 팁을 원하시는 분들도 보시는걸 추천드립니다. 풀이 일본어인게 문제지만, 번역기 돌리면 대강 알아볼 수 있게 나온다. 결론적으로 a+b와 a-b 중 큰쪽을 출력해주면 된다. 코드 : github import java.io.BufferedReader; import java.io.InputStreamReader; import java.u.. 2022. 10. 19. [자바] 프로그래머스 - 쿠키 구입 (Lv4, Java) 문제 : Programmers-쿠키 구입 문제 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges 필요 알고리즘 개념 두 포인터 (투 포인터) 투 포인터 알고리즘을 알고 있다면 어렵지 않게 풀어볼 수 있다. 일반적으로 문제를 좀 더 단순화해서 생각해보면 풀이를 생각하기 쉬운 경우가 많다. 한번 m이 고정이라고 생각해보고 어떻게 풀지 생각해보자. 그렇다면 l과 r을 적절히 조정해서 l~m의 합과 m+1~r 까지의 합을 동일하게 만드는 문제가 된다. 그리고 입력값으로 0 또는 음수가 주어지지 않으므로 단순히 l~m의 합이 m+1~r의 합보다 작다면 l을 줄이고, 그 반대라면 r을 늘려주기만 하면 된다. 즉 l과 r 두개의 포인터가 있는 투 포인.. 2022. 10. 14. [자바] 프로그래머스 - n^2 배열 자르기 (Lv2, Java) 문제 : Programmers-n^2 배열 자르기 문제 출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges 필요 알고리즘 개념 구현, 수학 태그가 상당히 애매하긴한데, 그냥 단순 구현문제인 것 같다. 1. 문제에서는 2차원 배열을 만들고나서 1차원배열로 만들고, left부터 right까지를 출력하라고 했으나, 애초에 n의 최대값이 10^7이므로 2차원 배열을 만드는 순간 물리적으로 O(10^14)가 필요해서 무조건 시간초과이다. (대강 O(10^9)을 1초로 잡으면 되므로 10만초임) 2. 마찬가지로, 1차원 배열로 바꾸는것도 O(10^14)이므로 하면 안됨. 3. 그럼 남은건 left부터 right까지에 대해 right - left < 1.. 2022. 10. 14. [자바] 백준 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. 이전 1 ··· 44 45 46 47 48 49 50 ··· 107 다음