피보나치 수열
내 코드 (정답) - 하
import java.util.*;
public class Main {
public List<Integer> solution(int n){
List<Integer> answer = new ArrayList<>();
for(int i = 0 ; i < n ; i++){
if(i == 0 || i == 1){
answer.add(1);
} else {
answer.add( answer.get(i - 1) + answer.get(i - 2));
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
for(int i : T.solution(n)){
System.out.print(i + " ");
}
}
}
정답 코드
import java.util.*;
class Main {
public int[] solution(int n){
int[] answer=new int[n];
answer[0]=1;
answer[1]=1;
for(int i=2; i<n; i++){
answer[i]=answer[i-2]+answer[i-1];
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
for(int x :T.solution(n)) System.out.print(x+" ");
}
}
소수(에라토스테네스 체)
내 코드(오답) - 전혀 풀지 못했다.
정답 코드
[ 에라토스테네스 ]
에라토스테네스가 소수 구하는 방법 중 가장 빠르다.
배열에 입력이 20 이면 배열에 21까지 담아서 초기화 한다.
그리고 2부터 하나씩 더해가면서 그 숫자의 배수들을 체크하는 것이다. - 암기
import java.util.*;
public class Main {
public int solution(int n){
int answer = 0;
int[] ch = new int[n + 1];
for(int i = 2; i < n; i++){
if(ch[i] == 0){
answer++
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
System.out.println(T.solution(n));
}
}
뒤집은 소수
내 코드(오답) - 너무 상
import java.util.*;
public class Main {
public List<Integer> solution(int n, int[] arr){
List<Integer> answer = new ArrayList<>();
List<Integer> list = new ArrayList<>();
for(int x : arr){
String j = String.valueOf(x);
String k = new StringBuilder(j).reverse().toString();
int y = Integer.parseInt(k);
list.add(y);
}
String[] temp = new String[list.size()];
for(int j = 0 ; j < list.size() ; j ++){
temp[j] = "false";
}
for(int i = 2 ; i < 10; i++){
for(int j = 0; j < list.size(); j ++){
if(list.get(j) % i == 0){
temp[j] = "true";
}
}
}
for(int i = 0 ; i < list.size(); i++){
if(temp[i] == "true"){
answer.add(list.get(i));
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int[] arr = new int[n];
for(int i = 0 ; i < n ; i++){
arr[i] = kb.nextInt();
}
for(int x : T.solution(n, arr)){
System.out.println(x + " ");
}
}
}
정답 코드 - 어렵다
import java.util.*;
class Main {
// 소수인지 확인하는 메소드
public boolean isPrime(int num){
if(num==1) return false;
for(int i=2; i<num; i++){
if(num%i==0) return false;
}
return true;
}
// 숫자를 뒤집는 메소드
public ArrayList<Integer> solution(int n, int[] arr){
ArrayList<Integer> answer = new ArrayList<>();
for(int i=0; i<n; i++){
int tmp=arr[i];
int res=0; // 뒤집는 결과
// 숫자를 뒤집는 로직
while(tmp>0){
// 1230 123 12 1
int t=tmp%10;
// 0 3 2
res=res*10+t;
// 0 3 32 321
tmp=tmp/10;
// 123 12 1 0
}
if(isPrime(res)) answer.add(res);
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
Scanner kb = new Scanner(System.in);
int n=kb.nextInt();
int[] arr=new int[n];
for(int i=0; i<n; i++){
arr[i]=kb.nextInt();
}
for(int x : T.solution(n, arr)){
System.out.print(x+" ");
}
}
}
반응형
'CS 기초 > 알고리즘 · 문제풀이' 카테고리의 다른 글
[JAVA] Array(1, 2차원 배열) - 격자판 최대합 / 봉우리 (0) | 2022.03.05 |
---|---|
[JAVA] Array(1, 2차원 배열) - 점수계산 / 등수구하기 (0) | 2022.02.27 |
[JAVA] Array(1, 2차원 배열) - 큰 수 출력하기 / 보이는 학생 / 가위 바위 보 (0) | 2022.02.26 |
[JAVA] 문자열(String) - 가장 짧은 문자거리 / 문자열 압축 / 암호 (0) | 2022.02.26 |
[JAVA] String(문자열) - 회문 문자열 / 유효한 팰린드롬 / 숫자만 추출 (0) | 2022.02.19 |