안녕하세요. delay100 입니다!
오늘은 99클럽의 정기세션의 마지막 날입니다..! 매일 꾸준히 공부할 수 있게 해주어 감을 잃지 않도록 한 좋은 프로그램이었어요.
그리고 다른 분들의 코드를 보면서 제 코드에 대한 반성도 많이 할 수 있었구요!
클럽장님의 앞으로의 공부 방향에 대한 이야기
1. 알고리즘은 정답이 있는 문제다.
알고리즘 테스트는 정답을 찾아내는 방법이 여러개인 시험이다. 어떻게든 풀어내면 된다.
많이 풀줄 아는 방법을 알기 위해 많은 문제를 풀어보아라.
1-2. 어떻게 이 경험을 축적할 것인가?
알고리즘이 어려운 이유로는 자료구조에 대한 이해가 부족한 경우일 수 있다. 알고리즘에 대한 개념을 학습해야한다.
유명한 알고리즘에 대한 이해도가 있으면 문제 푸는데 도움이 된다.
공부 순서는 자료구조 -> 알고리즘 -> 스스로 해당 알고리즘 코드연습
2. 알고리즘에 대한 접근 태도
문제를 보고 키보드에 손을 올리는 것이 아니라, 문제에서 요구사항 이해 및 도출할 값을 파악하는 것을 먼저 해야한다.
미들러 문제
1번. 소수 찾기
https://school.programmers.co.kr/learn/courses/30/lessons/42839
풀이 방법
1. 순열 구하기
2. 해당 값이 소수인지? 소수면 Hashset에 넣기
import java.io.*;
import java.util.*;
class Solution {
static int size;
static int[] list;
static int[] selectedList;
static boolean[] isVisited;
static Set<Integer> set;
public int solution(String numbers) {
set = new HashSet<Integer>();
size = numbers.length();
list = new int[size];
isVisited = new boolean[size];
selectedList = new int[size];
for(int i=0; i<size; i++) {
list[i] = numbers.charAt(i) - '0';
}
func(0);
Iterator<Integer> it = set.iterator();
while(it.hasNext()) {
System.out.println(it.next());
}
return set.size();
}
/**
* 모든 숫자 순열 구하기 - 백트래킹
* @param i 현재 인덱스
* @param s
*/
public static void func(int cnt, ) {
if(cnt == size) {
solve();
return;
}
for(int k=0; k<size; k++) {
if(!isVisited[k]) {
selectedList[cnt] = list[k];
isVisited[k] = true;
func(cnt+1);
isVisited[k] = false;
}
}
}
public static void solve() {
StringBuilder sb = new StringBuilder();
for(int i=0; i<size; i++) {
sb.append(selectedList[i]);
}
String s = sb.toString();
if(s.equals("")) return; // false, false, false인 경우 값이 비어있음
int number = Integer.parseInt(sb.toString());
int sqrt = (int)Math.sqrt(number);
boolean isNotDecimal = false;
if(number==0 || number==1) return;
// 2. 소수인지 확인
for(int i=2; i<sqrt; i++) {
if(number%i==0) {
isNotDecimal = true;
break;
}
}
if(!isNotDecimal) // 소수이면
set.add(number);
}
}
2번. 쿼드압축 후 개수 세기
https://school.programmers.co.kr/learn/courses/30/lessons/68936
금요일 or 토요일에 풀이 게시글 작성 예정입니다!
+ 비기너 문제
1번.
https://school.programmers.co.kr/learn/courses/30/lessons/12918
2번.
https://school.programmers.co.kr/learn/courses/30/lessons/133499
+ 챌린저 문제
1번.
https://www.acmicpc.net/problem/1002
2번.
https://www.acmicpc.net/problem/9012
봐주셔서 감사합니다. 피드백 환영합니다.
'항해99 > 99club1기TIL' 카테고리의 다른 글
[99club/TIL] 7주차 - 수요일 TIL(Today I Learned) (0) | 2024.05.08 |
---|---|
[99club/TIL] 7주차 - 화요일 TIL(Today I Learned) (0) | 2024.05.08 |
[99club/TIL] 7주차 - 월요일 TIL(Today I Learned) (0) | 2024.05.06 |
[99club/TIL] 6주차 - 일요일 TIL(Today I Learned) (0) | 2024.05.05 |
[99club/TIL] 6주차 - 토요일 TIL(Today I Learned) (0) | 2024.05.04 |