알고리즘
-
탐욕법 Greedy Algorithms 기본 개념 | [프로그래머스] 체육복 | 코딩테스트 자바 풀이알고리즘 2023. 8. 17. 12:43
탐욕법 문제 해결 과정에서 그 순간순간마다 최적이라고 생각되는 결정을 하는 방식으로 최종 해답에 도달 각 순간의 최선 ≠ 전체의 최선 모든 해를 검토하는 방법(동적 계획법 등)에 비해 계산 속도가 빠르기 때문에, 몇몇 문제에서는 최적해를 빠르게 산출할 수 있음 빠른 계산 속도가 장점으로 동적 계획법과 서로 보완적으로 활용 탐욕법을 언제 쓰나요? 탐욕스러운 선택 조건 : 독립성 - 앞의 선택이 이후의 선택에 영향을 주지 않는다 최적 구분 구조 조건 : 문제에 대한 최종 해결 방법이 부분 문제에서도 최적 해결 방법이다. [프로그래머스] 체육복 문제링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42862?language=java import j..
-
[백준 9095번] 1, 2, 3 더하기 | 자바 | 코딩테스트 풀이알고리즘 2023. 8. 17. 12:00
문제 링크 : https://www.acmicpc.net/problem/9095 import java.io.BufferedReader; import java.io.InputStreamReader; public class Main { public static void main(String[] args) throws Exception { // 첫째줄 T // 각 테스트케이스는 1 ~ 10 사이의 정수 n // -> n을 1, 2, 3의 합으로 나타내는 방법의 수 => 순서가 다르면 다른 방법 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int T = Integer.parseInt(br.readLine()); // Syst..
-
[프로그래머스] 완주하지 못한 선수 | 자바, 해시맵 | 코딩테스트 풀이알고리즘 2023. 8. 17. 10:44
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/42576?language=java 동명이인이 있을 수 있다는 제한 사항에 유의 import java.util.*; class Solution { public String solution(String[] participant, String[] completion) { // participant -> 참여한 선수가 담긴 배열 // completion -> 완주한 선수가 담긴 배열 // answer -> 완주하지 못한 선수의 이름 // 참가자 중에는 동명이인이 있을 수 있습니다 // John이 두 명이고, 한 명이 완주하지 못했다 // p -> John, John / c -> John .....
-
[short tip] 치트 시트cheet sheet알고리즘 2023. 8. 16. 15:30
치트 시트 일종의 요약된 참고 자료 프로그래밍 각 언어나 도구의 기본 문법, 함수, 명령어 등을 간략하게 정리 검색 엔진 또는 gpt 등에서 조회 시, 각종 잘 정리된 자료들을 확인해 볼 수 있다. 1. Java cheet sheet https://www.edureka.co/blog/cheatsheets/java-cheat-sheet/ Java Cheat Sheet | Java Programming Cheat Sheet For Beginners | Edureka A handy Java Cheat Sheet is useful for the aspiring Java developers and contains ready-to-use codes for application development. www.edur..
-
[short tip]Mermaid문법, 노션 또는 draw.io로 코드 구조 시각화하기알고리즘 2023. 8. 16. 15:01
코드를 이해하기 위해서 시각적 그래프를 그릴 필요가 있다. 1. 먼저 chatGPT로 주어진 코드를 머메이드 코드로 변환하자 * mermaid 문법 : 순서도, 구조도를 나타내는 문법 https://chat.openai.com/ ChatGPT A conversational AI system that listens, learns, and challenges chat.openai.com https://sharegpt.com/c/RTp19sz Java DFS BFS Flowchart - A ShareGPT conversation This is a conversation between a human and a GPT-3 chatbot. The human first asks: import java.io.Buffe..
-
맵Map과 해시Hash의기본 개념알고리즘 2023. 8. 16. 12:37
맵Map 해시맵(Hash map) : 해시테이블(Hash table), 딕셔너리(Dictionary) 키(key)와 값(value)을 대응시켜 자료를 보관하는 자료 구조(like 사전) 정보를 찾는 기준이 되는 키와 그 키에 연결된 값으 대응 관계를 저장 예: 물품 이름(키)와 가격(값) 또는 재고(값)과. 학생 이름(키)와 성적(값) 키는 중복되지 않음 존재하는 키에 새 값을 넣으면 기존 값은 지워지고 새 값으로 덮어 써짐 키를 추가적으로 저장하기 때문에 공간 복잡도는 올라가지만, 모든 값을 검색할 필요가 없기 때문에 시간 복잡도, 즉 효율성이 개선됨. 해싱Hashing 해시 함수(hash function) 데이터의 효율적 관리를 목적으로 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수 이..
-
스택 구현하기 | Stack, ArrayDeque알고리즘 2023. 8. 10. 16:39
Stack으로 구현 Stack stack = new Stack(); // 끝 값 확인하는 것, 새로 추가하는 것, 가장 최신에 추가한 걸 밖으로 꺼내는 것. stack.push("리액트를 다루는 기술"); stack.push("정글북"); stack.push("이상한 나라의 앨리스"); System.out.println(stack); // 먼저 push된 순으로 안으로 들어가 있음 // 꺼내기 전에 확인하는 명령(peek) System.out.println(stack.peek()); // 가장 마지막에 넣은 값을 반환 후 삭제(pop) System.out.println(stack.pop()); System.out.println(stack); System.out.println(stack.pop()); Sy..
-
[백준] 1158번 요세푸스 문제 | 큐 활용, 자바 | 코딩테스트 풀이알고리즘 2023. 8. 10. 16:30
문제링크 : https://www.acmicpc.net/problem/1158 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayDeque; public class Main { public static void main(String[] args) throws IOException { // 입력 BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); String line = bf.readLine(); // 첫번째 줄 int N = Integer.parseInt(line.spli..