본문 바로가기

Algorithm94

[알고리즘 문제풀이] 프로그래머스 - K진수에서 소수 개수 구하기 /JAVA https://programmers.co.kr/learn/courses/30/lessons/92335 코딩테스트 연습 - k진수에서 소수 개수 구하기 문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소 programmers.co.kr /** 1. n 숫자 k진수로 변환 1-1) n %k = 나머지를 놔두고, /10씩해서 구하기 2. 변환된 숫자를 조건에 따라 분할 2-1) String k진수를 0을 만날때마다 분할 3. 해당 조건의 숫자가 소수인지 확인 4. 맞으면 개수 추가 **/ import java.util.*; import java... 2022. 1. 30.
[알고리즘 문제풀이] 프로그래머스 - 신고 결과 받기 / JAVA https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr /** 1. 유저 리스트, 신고 리스트, k번 신고 유저 정지 1-1) 유저 최대 1000, 신고 리스트 최대 200,000 2. 신고 내역을 기준으로 몇번 신고했는지 체크 2-1) 인트배열로 각 이름별 신고 체크 2-2) 한명이 동일사람에게 여러번 체크해도 1회 체크해야하므로, 신고했었다면 다음번은 무시처리하게 2차원 배열로 신고여부 확인 2-3) 이름.. 2022. 1. 30.
[알고리즘 문제풀이] 백준 1065 한수 / JAVA https://www.acmicpc.net/problem/1065 1065번: 한수 어떤 양의 정수 X의 각 자리가 등차수열을 이룬다면, 그 수를 한수라고 한다. 등차수열은 연속된 두 개의 수의 차이가 일정한 수열을 말한다. N이 주어졌을 때, 1보다 크거나 같고, N보다 작거나 www.acmicpc.net import java.io.*; import java.util.*; public class Main { public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(br.readLi.. 2022. 1. 30.
[알고리즘 문제풀이] 백준 4673 셀프 넘버 /JAVA https://www.acmicpc.net/problem/4673 4673번: 셀프 넘버 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다. 양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의하자. 예를 들어, d(75) = 75+7+5 = 87이다. 양의 정수 n이 주어졌을 때, www.acmicpc.net import java.io.*; import java.util.*; public class Main { public static void main(String[] args) { int [] numbers = new int[10001]; int num = 1; while(num 0){ sum += num2 % 10; num2 /= 10; } if (.. 2022. 1. 30.
[알고리즘 문제풀이] 백준 2798 블랙잭 /JAVA https://www.acmicpc.net/problem/2798 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net import java.util.*; import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokeniz.. 2022. 1. 30.
[알고리즘 문제풀이] 백준 2309 일곱 난쟁이 /JAVA https://www.acmicpc.net/problem/2309 2309번: 일곱 난쟁이 아홉 개의 줄에 걸쳐 난쟁이들의 키가 주어진다. 주어지는 키는 100을 넘지 않는 자연수이며, 아홉 난쟁이의 키는 모두 다르며, 가능한 정답이 여러 가지인 경우에는 아무거나 출력한다. www.acmicpc.net /* 9개 중에 2개를 선택하여 그 두개를 전체합계에서 뺄 때 100일 시 출력 */ import java.util.*; import java.io.*; public class Main { public static int[] arr,choice; public static void main(String[] args) throws IOException{ arr = new int[9]; choice = new .. 2022. 1. 30.
[알고리즘 개념] 브루트 포스(Brute Force) /Java 코드 브루트포스 알고리즘이란 완전탐색 알고리즘. 모든 경우의 수를 탐색해보는 알고리즘. Brute:짐승,동물 Force: 힘 . 즉 난폭한 힘 이런 뜻인데, 모든 경우의 수를 완전 탐색으로 구하는 알고리즘이다. 브루트포스 알고리즘의 방법으론, for문을 이용한 탐색, 백트래킹(재귀)을 이용한 탐색, DFS&BFS 탐색 등이 있다. (재귀와 DFS,BFS는 추후에 설명) 컴퓨터는 약 1초에 1억번(10^8)의 연산이 가능하다고 알려져있는데, 브루트포스는 전체 탐색하기때문에 좋은 알고리즘 방식이 아니다. (600억을 확인한다면... 600초 = 확인하는데만 10분...) 그래서 실제 알고리즘을 풀땐, 이 문제가 브루트포스로 가능한지 확인 후 불가능하다면 어떤 알고리즘을 적용해서 시간복잡도를 줄일지 확인해야한다.(.. 2022. 1. 30.
[알고리즘 개념] 소수 구하기, 소수 판별 / JAVA 소수(Prime Number)란 1보다 큰 자연수 중 1과 그 수 자신만을 약수로 갖는 자연수 알고리즘 문제중에 소수판별 및 구하는 문제는 많이 나온다. 개발자들 사이에서 소수를 중요시 여기는 이유는 암호화방식에 소수를 많이 쓰기 때문입니다. 대표적으로 RSA암호방식이 있습니다. 2022.01.27 - [CS/NetWork] - [네트워크] 대칭키(Symmetric key), 공개키(Public Key), RSA 암호화 3가지방식으로 구해볼 예정 방법1(N미만 수로 나누기) 위에서 얘기했듯 1과 본인의 수(N)로만 나눠져야하므로, 1과 N를 제외한 약수가 있다면 소수가 아님. N미만의 수로 나누어서 확인 시간복잡도 해당숫자만 소수판별: O(N) 숫자이하 소수구하기: O(N^2) import java.ut.. 2022. 1. 28.