Clover
[프로그래머스/python] 소수 만들기
Algorithm(PS) 2022. 7. 27. 17:49

문제 [프로그래머스] 소수 만들기 (Level 1) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 1. 주어진 리스트에 대해 3개의 숫자를 중복 없이 조합할 수 있는 모든 경우의 수를 만든다. 2. 조합의 합이 소수인지 아닌지 판별한다. - 소수라면, count + 1 - 소수가 아니라면, 넘어간다. 위의 규칙을 구현하여 count를 반환해주면 되는 문제로, 어렵지 않게 구현을 할 수 있었다. 풀이 방법을 정리하고 가장 먼저 떠오른 방법은, 파이썬의 itertools.combinations 모듈을 활용하는 것이었다. 주어진 인자의 모든 조합을 튜플로..

[Algorithm] 재귀(Recursion)
Algorithm(PS) 2022. 7. 25. 15:10

코딩 테스트를 대비하여 자료구조와 알고리즘에 대해 정리하며 공부 중입니다. 틀린 부분이 있을 수 있다는 점을 감안하고 봐주시기 바라며, 지적은 언제나 환영합니다. 🧐 재귀(Recursion) 재귀 함수(Recursive function)는 함수 내에서 자기 자신을 호출하는 함수이다. 함수 내부에서 자기 자신이 호출되면, 자기 자신을 메모리에 복사시켜 놓고 함수를 호출한다. 그리고 반드시 함수가 무한 루프에 빠지지 않기 위해서는 base case를 설정해주어야 한다. * base case : 함수가 더 이상 자기 자신을 호출하지 않도록 설정하는 조건을 의미한다. // 인수 N의 팩토리얼을 구하는 재귀 함수 (python) def factorial(N): if (N == 1): // base case (탈출..

article thumbnail
[백준-Python] 문제 1417 - 국회의원 선거
Algorithm(PS) 2022. 7. 20. 15:12

문제 1417번: 국회의원 선거 첫째 줄에 후보의 수 N이 주어진다. 둘째 줄부터 차례대로 기호 1번을 찍으려고 하는 사람의 수, 기호 2번을 찍으려고 하는 수, 이렇게 총 N개의 줄에 걸쳐 입력이 들어온다. N은 50보다 작거나 같 www.acmicpc.net 풀이 단순 구현 처음 문제를 이해하고 생각나는 대로 구현을 해봤는데 한 번에 통과했다. [소스 코드] 리스트 arr을 선언하여 입력받은 득표 수를 전부 담아놓는데, 다솜이의 득표수는 무조건 arr[0]에 저장되어 있을 것이다. 따라서, 다솜이의 득표수 arr[0]이 전체 리스트의 최댓값이 될 때까지 반복을 하고, 반복한 횟수를 출력하면 되는 것이다. 매 반복마다 max값의 인덱스 i 를 .index() 함수를 통해 받아오고, arr[i] = ar..

article thumbnail
[백준-Python] 문제 14888 - 연산자 끼워넣기
Algorithm(PS) 2022. 7. 5. 15:56

문제 N개의 수로 이루어진 수열 A1, A2, ..., AN이 주어진다. 또, 수와 수 사이에 끼워넣을 수 있는 N-1개의 연산자가 주어진다. 연산자는 덧셈(+), 뺄셈(-), 곱셈(×), 나눗셈(÷)으로만 이루어져 있다. 우리는 수와 수 사이에 연산자를 하나씩 넣어서, 수식을 하나 만들 수 있다. 이때, 주어진 수의 순서를 바꾸면 안 된다. 예를 들어, 6개의 수로 이루어진 수열이 1, 2, 3, 4, 5, 6이고, 주어진 연산자가 덧셈(+) 2개, 뺄셈(-) 1개, 곱셈(×) 1개, 나눗셈(÷) 1개인 경우에는 총 60가지의 식을 만들 수 있다. 예를 들어, 아래와 같은 식을 만들 수 있다. 1+2+3-4×5÷6 1÷2+3+4-5×6 1+2÷3×4-5+6 1÷2×3-4+5+6 식의 계산은 연산자 우선..

article thumbnail
[백준/Python] 문제 15654 - N과 M (5)
Algorithm(PS) 2022. 7. 3. 19:00

문제 N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다. N개의 자연수 중에서 M개를 고른 수열 입력 첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8) 둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다. 출력 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. 풀이 def dfs(depth): if depth == M: # 탈출조건 print(' '.join(map(str, visited))) else:..

[Algorithm] BFS & DFS
Algorithm(PS) 2022. 6. 4. 09:23

코딩 테스트를 대비하여 자료구조와 알고리즘에 대해 정리하며 공부중입니다. 틀린 부분이 있을 수 있다는 점을 감안하고 봐주시기 바라며, 지적은 언제나 환영합니다. BFS, DFS 그래프를 탐색하는 방법에는 크게 너비 우선 탐색(BFS) 과 깊이 우선 탐색(DFS) 이 있다. 그래프(Graph) 정의 : Node(정점, vertex) 와 그 Node들을 연결하는 Edge(간선) 을 하나로 모아놓은 자료 구조. Node(정점) : 그래프의 특정 위치라는 개념으로 사용한다. 트리(Tree)구조와 다르게, Root node의 개념이 없다. Edge(간선) : Node간의 관계를 연결하는 선. 두 그래프의 Node의 갯수가 같아도, Edge의 갯수는 다를 수 있다. (Edge가 없을 수도 있다.) 그래프의 탐색 :..

article thumbnail
[백준/Java] 문제 10867 - 중복 빼고 정렬하기
Algorithm(PS) 2022. 1. 12. 09:52

문제 N개의 정수가 주어진다. 이때, N개의 정수를 오름차순으로 정렬하는 프로그램을 작성하시오. 같은 정수는 한 번만 출력한다. 입력 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 출력 첫째 줄에 수를 오름차순으로 정렬한 결과를 출력한다. 이때, 같은 수는 한 번만 출력한다. 풀이 import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.Scanner; public class Main { public static void main(String[] args) { //Buffered..

article thumbnail
[백준/Java] 문제 10989 - 수 정렬하기 3
Algorithm(PS) 2022. 1. 5. 13:39

문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 10,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 10,000보다 작거나 같은 자연수이다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 풀이 import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { // 카운팅 정렬 => 입력받을 숫자의 최소~최대 범위를 알고 있을 때 사용하면 빠른 성능을 기대할 수 있음. /..

article thumbnail
[백준/Java] 문제 2750 - 수 정렬하기
Algorithm(PS) 2022. 1. 4. 10:47

문제 N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다. 출력 첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다. 풀이 1 import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int count = scanner.nextInt(); //입력받을 숫자..

article thumbnail
[백준/Java] 문제 14681 - 사분면 고르기
Algorithm(PS) 2021. 11. 8. 00:56

문제 흔한 수학 문제 중 하나는 주어진 점이 어느 사분면에 속하는지 알아내는 것이다. 사분면은 아래 그림처럼 1부터 4까지 번호를 갖는다. "Quadrant n"은 "제n사분면"이라는 뜻이다. 예를 들어, 좌표가 (12, 5)인 점 A는 x좌표와 y좌표가 모두 양수이므로 제1사분면에 속한다. 점 B는 x좌표가 음수이고 y좌표가 양수이므로 제2사분면에 속한다. 점의 좌표를 입력받아 그 점이 어느 사분면에 속하는지 알아내는 프로그램을 작성하시오. 단, x좌표와 y좌표는 모두 양수나 음수라고 가정한다. 입력 첫 줄에는 정수 x가 주어진다. (−1000 ≤ x ≤ 1000; x ≠ 0) 다음 줄에는 정수 y가 주어진다. (−1000 ≤ y ≤ 1000; y ≠ 0) 출력 점 (x, y)의 사분면 번호(1, 2,..