본문 바로가기

ALGORITHM

(71)
[c++] 20291 파일정리 (map사용) https://www.acmicpc.net/problem/20291 20291번: 파일 정리 친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를 www.acmicpc.net string 함수의 find() 와 substr() 함수를 사용하였습니다. counting은 map을 사용하였는데 으로 한줄로 해결가능 할 것 같아서 map을 사용하였습니다. 근데 key값에 접근하는 방법을 까먹어서 다시 검색검색,, 첫번째 방법 : iterator로 선언해서 for문 돌려주면 됩니당. for (map::iterator iter = ex.begin(); iter != ex.end(); i..
[JAVA] 1719 택배 (다익스트라) https://www.acmicpc.net/problem/1719 1719번: 택배 명우기업은 2008년부터 택배 사업을 새로이 시작하기로 하였다. 우선 택배 화물을 모아서 처리하는 집하장을 몇 개 마련했지만, 택배 화물이 각 집하장들 사이를 오갈 때 어떤 경로를 거쳐야 하 www.acmicpc.net 모든 정점에서 다익스트라를 실행해서 첫번째로 탐색되는 정점을 저장하면서 업데이트 하였습니다. 출력하는 방식이 헷갈려서 조금 오래걸린 문제ㅜ.ㅜ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; public class Main { public static c..
[Java] 순열, 조합, 부분집합 순열 서로 다른 것들 중 몇 개를 뽑아서 한 줄로 나열하는 것 DFS 로 for문을 0부터 시작 int (boolean) 배열 visited 사용 [1, 3, 5] 배열에서 순열을 찾는 코드 import java.util.Arrays; public class Recursive7 { static void permutation(int[] arr, int[] p, int[] visited, int idx) { if (idx == arr.length) { System.out.println(Arrays.toString(p)); return; } for (int i=0; i
[Java] 17406 배열 돌리기 4 17406 배열 돌리기 4 https://www.acmicpc.net/problem/17406 17406번: 배열 돌리기 4 크기가 N×M 크기인 배열 A가 있을때, 배열 A의 값은 각 행에 있는 모든 수의 합 중 최솟값을 의미한다. 배열 A가 아래와 같은 경우 1행의 합은 6, 2행의 합은 4, 3행의 합은 15이다. 따라서, 배열 A의 www.acmicpc.net 구현 + DFS (순열) 돌리는 경우의 수를 DFS로 구현해서 완성되면 배열 돌려기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; import java.io.FileInputStream;..
[Java] 16926 배열 돌리기 1, 16935 배열 돌리기 3 16926 배열 돌리기 1 - 구현 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.*; import java.io.FileInputStream; class boj_16926 { static int[] dx = {1, 0, -1, 0}; static int[] dy = {0, 1, 0, -1}; static int N, M, R, rotation; static int[][] arr; static void rotate(int count) { int x = count, y = count; int direction = 0; int width = M - count ..
[c++] 7579 앱 (knapsack) https://www.acmicpc.net/problem/7579 7579번: 앱 입력은 3줄로 이루어져 있다. 첫 줄에는 정수 N과 M이 공백문자로 구분되어 주어지며, 둘째 줄과 셋째 줄에는 각각 N개의 정수가 공백문자로 구분되어 주어진다. 둘째 줄의 N개의 정수는 현재 활 www.acmicpc.net 노트북 재부팅 5번의 원인이 된 문제 이유는.. 1 ≤ m1, ..., mN ≤ 10,000,000을 만족한다. 또한, 0 ≤ c1, ..., cN ≤ 100이고, M ≤ m1 + m2 + ... + mN 이래서 배열을 dp[101][1000000001] ㅋㅋㅋ이렇게 설정했더니 컴퓨터가 바로 종료.. 배열을 너무 큰 값으로 설정하면 안된다 그냥 비용을 dp 로 설정하면 되는 문제였다. 평소와 거꾸로 생각..
[swift] 알고리즘 풀기 전 준비 import Foundation // 1, 2, 3, 4, 5 -> Int 배열로 변환하기 let intArr = readLine()!.split(separator: " ").map { Int($0)! } print(intArr[0]) // 1, 2, 3, 4, 5 -> String 배열로 변환하기 let stringArr = readLine()!.split(separator: " ") print(stringArr) // closure 방식의 split let stringArr = readLine()!.split { $0 == " " } // 12345 -> Int 배열로 반환하기, Array(readLine())이 배열에 반환하는 값은 Character 이다. // 따라서 String으로 변환 후 In..
[c++] 전화번호 목록 (프로그래머스-Trie, 정렬, 해시) https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조 programmers.co.kr 맵과함께 구현한 트라이 구조체를 만들어서 풀었슴니당 이거 풀려고 트라이 다시 공부함.. https://luen.tistory.com/108 트라이 Trie (c++ 구조체 구현) Trie 문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료구조 입니다. 트리 구조로 문자열을 저장하기 때문에 단순히 비교하면서 탐색하는 것보다 효율성이 좋습니다. 주로 문..