알고리즘(36)
-
[2021-05-25] 약수의 개수와 덧셈
푼 시간 : 40분 언어 : 자바 https://programmers.co.kr/learn/courses/30/lessons/77884 코딩테스트 연습 - 약수의 개수와 덧셈 두 정수 left와 right가 매개변수로 주어집니다. left부터 right까지의 모든 수들 중에서, 약수의 개수가 짝수인 수는 더하고, 약수의 개수가 홀수인 수는 뺀 수를 return 하도록 solution 함수를 완성해주 programmers.co.kr 재귀함수로 풀다보니 시간이 오래걸렸다 지저분한데 급해서 그냥 풀었다. 막상 남들 푼걸 보니 재귀가 없어도 되는 문제였다... 너무 어렵게 생각하려는 습관이 문제인 것 같다. 후배들 보면서도 하는 생각인데 나도 결국 똑같이 어렵게 연산하는길을 택하는경우가 많은 것 같다.. cla..
2021.05.25 -
[2021-05-05] 소수 찾기
푼 시간 : 30분 언어 : 자바 전에 에라토스테네스의 체 로 풀어야만 한다는 글을 보고 안 풀어놓고 까먹었는데, 오늘 다시 보게 됐다.. 이해가 안된다면 알고리즘 항목에 있는 에라토스 테네스의 체를 보면 금방 이해가 되실 것 같다. import java.util.*; class Solution { public int solution(int n) { int answer = 0; int[] filter = new int[n + 1]; Arrays.fill(filter, 1); // 필터에 1을 채운다. filter[0] = 0; filter[1] = 0; // 0과 1은 소수가 아님을 미리 필터링 한다. for (int i = 2; i < Math.sqrt(n) + 1; i++){ // 제곱근+1의 범위 ..
2021.05.05 -
[2021-05-03] 음양 더하기
푼 시간 : 10분 언어 : 자바 programmers.co.kr/learn/courses/30/lessons/76501?language=java 코딩테스트 연습 - 음양 더하기 어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 re programmers.co.kr 문제가 쉬운데에 비해 푼 사람 수가 적었다. 정말 쉽다. class Solution { public int solution(int[] absolutes, boolean[] signs) { int answer = 0; for(int i=0; i
2021.05.03 -
[2021-05-01] 모의고사
푼 시간 : 2시간 언어 : 자바 programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 programmers.co.kr 완전 탐색이라는 풀이법을 알고는 있었지만 완전탐색의 기법에 있는 알고리즘에 기반해서 풀었는지는 잘 모르겠다. 이렇게까지 시간이 오래 걸릴줄은 몰랐다. 처음으로 그림을 그려가면서 푼 문제였다. 머릿속에만 그리기에는 너무 복잡했기때문에, 그림을 그려가면서 푸는 수가 제일 좋은 것 같았다. 좋은 방향으로 작용 했던 것 같다. 변수를 너무 많이 만들..
2021.05.01 -
[2021-04-29] K번째 수
푼 시간 : 30분 언어 : 자바 programmers.co.kr/learn/courses/30/lessons/42748 코딩테스트 연습 - K번째수 [1, 5, 2, 6, 3, 7, 4] [[2, 5, 3], [4, 4, 1], [1, 7, 3]] [5, 6, 3] programmers.co.kr 이 쉬운걸 왜 아직도 풀지 못했었는가 매번 풀때마다 이상하게 돌아돌아 가는 습관이 있었던 것 같다. 요새는 귀찮음?이 생각을 바꾼다고 코드를 점점 짧게 하려다 보니 전에는 1시간을 들여다봐도 안됐던것이 10분만에 풀고 ( 오랜만에 봐서 기억이 안나던 것들 때문에 ) 20분을 더 소비했다 import java.util.*; class Solution { public int[] solution(int[] arra..
2021.04.29 -
[2020-12-01] 하샤드 수
푼 시간 : 20분 언어 : 자바 programmers.co.kr/learn/courses/30/lessons/12947 코딩테스트 연습 - 하샤드 수 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하 programmers.co.kr 하샤드 수 라는 말을 처음 들었는데 count를 안쓰고 어떻게든 만들어 보려고 했으나.. 결국엔 만들게 되었다. 코드를 짧게 줄이고싶다. class Solution { public boolean solution(int x) { boolean answer = true; int temp=0; int count=(int)..
2020.12.01