자료구조와 알고리즘
-
재귀 - 백준 15655 N과 M (6) - 중복 없는 오름차순 조합자료구조와 알고리즘/문제풀기 2024. 4. 28. 15:30
N과 M (6) 시간 제한메모리 제한제출정답맞힌 사람정답 비율1 초512 MB22723190351541884.408%문제N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.N개의 자연수 중에서 M개를 고른 수열고른 수열은 오름차순이어야 한다.입력첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다.출력한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.수열은 사전 순으로 증가하는 순서로 출력해야 한다.예제 입력 ..
-
재귀 - 백준(15654) N과 M(5) - 중복없는 오름차순 순열자료구조와 알고리즘/문제풀기 2024. 4. 16. 17:28
N과 M (5)시간 제한메모리 제한제출정답맞힌 사람정답 비율1 초512 MB37243273202185572.945%문제N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.N개의 자연수 중에서 M개를 고른 수열입력첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다.출력한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.수열은 사전 순으..
-
완전탐색 - 백준[2840] 행운의 바퀴자료구조와 알고리즘/문제풀기 2024. 4. 16. 13:38
import java.util.Arrays; import java.util.Scanner; public class Main{ public static void main (String[] args) { Scanner sc = new Scanner(System.in); int N = sc.nextInt(); int K = sc.nextInt(); char[] ans = new char[N]; Arrays.fill(ans, '?'); int curIndex = 0; while (K-- > 0) { int backStep = sc.nextInt(); char backAlphabet = sc.next().charAt(0); int nextIndex = ((curIndex - backStep) % N + N) % ..
-
완전탐색 - 백준(10250) ACM 호텔자료구조와 알고리즘/문제풀기 2024. 4. 16. 13:14
- 풀이 import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); int n = Integer.parseInt(br.readLine()); while (n-- > 0){ String[] input = br.readLine().split(" "); int h = Integer.parseInt(input[0]); int w = ..
-
완전탐색 - 백준 (10448) 유레카 문제자료구조와 알고리즘/문제풀기 2024. 4. 16. 12:49
- 풀이 import java.io.*; public class Main{ static boolean[] isEurekaNumber = new boolean[1001]; public static void main(String[] args) throws IOException{ int[] triangleNumber = new int[50]; int triagleCnt = 0; for(int i =1;;i++){ int number = i*(i+1)/2; if(number > 1000) break; triangleNumber[triagleCnt++] = number; } BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int ..
-
완탐자료구조와 알고리즘/알고리즘 2024. 4. 12. 23:53
진법 변환 보기 회문인 수에서는 볼게 딱히 없었다. 팰린드롬 검사할때 length/2해야한다는 것 정도 ACM호텔 몫과 나머지 이용해서 문제 풀 때 1~H /H -> 1로 맞춰주고 싶어 -> 1~H구간을 1로 원래는 H만 1임 -> (-1)/h +1 나누기 구간 맞추기 (경계값다르고, 몫이 0이 아닌 1부터 시작하고싶을 때) -> 나머지 구간 맞추는 것도 같은 방법 사용함 (나머지 결과랑 나누는 수 맞춰주고 싶을 때, 0~h-1나머지 아니고 1-h 나머지로) H+1 ~ 2H =>2로 나오는데 110과 111 똑같이 11호로 배정 판화 방문 남기는 기본 스킬! 행운의 바퀴.. 시계방향이면 반대로 보이는게 맞구낭 환형일 경우! 배열을 연결된 것 처럼 사용하는 스킬 배워가자 마지막부터 하는 법
-
자알인 - 스택 & 큐자료구조와 알고리즘/알고리즘 2024. 1. 30. 12:08
1. 유효한 괄호 - 내 풀이(1ms) public boolean isValid(String s) { //먼저들어간 괄호는 무조건 이전 괄호와 짝이어야함 //사실상 거의 뭐 팰린드롬 검사지 char[] chararr = s.toCharArray(); Deque deq = new ArrayDeque(); for(char p : chararr){ if(p == '(' || p == '[' || p == '{'){ deq.push(p); }else{ if(deq.isEmpty()){ return false; } if(p == ')' && deq.peek() == '('){ deq.pop(); }else if(p == ']' && deq.peek() == '['){ deq.pop(); }else if(p == ..
-
연결리스트자료구조와 알고리즘/문제풀기 2024. 1. 15. 18:58
1. 팰린드롬 연결 리스트 1. 내풀이(13ms) 스택 이용한 풀이 public boolean isPalindrome(ListNode head) { ListNode cur = head; Stack st = new Stack(); st.push(cur.val); while(cur.next != null){ cur = cur.next; st.push(cur.val); } while(!st.isEmpty()){ int stVal = st.pop(); if(stVal != head.val){ return false; } head = head.next; } return true; } 2. 데크를 이용한 풀이 (12ms) public boolean isPalindrome(ListNode head) { Deque d..