Algorithm
-
[6월 5주차][알고리즘] 투 포인터(Two Pointer)Algorithm/코알못 알고리즘 스터디 2022. 6. 26. 17:19
📌 투 포인터(Two Pointer) 알고리즘 투 포인터 알고리즘은 문자열, 배열, 리스트에서 두 개의 포인터를 이용하여 원하는 값을 찾는 방법이다. 데이터를 순차적으로 접근하면서 두 개의 포인터 사이의 구간값과 원하는 타겟값이 같을 때까지 포인터를 조작하는 기법이다. 정렬된 배열에서 어떤 두 요소 사이의 값들의 합이 찾으려는 값과 같은 경우가 존재하는 지 확인하는 방법이다. 예제 👉 N칸의 1차원 배열이 있을 때, 부분 배열 중 그 원소의 합이 M이 되는 경우의 수를 구하라. 단, N과 M은 자연수이다. 가장 먼저 떠오르는 단순한 방법으로 2중 for문을 사용하여 완전 탐색을 하는 방법이 있다. 하지만 이 방법은 반드시 N*N번 확인해야 하므로 시간복잡도가 O(N^2)가 되어 시간이 오래 걸린다. 이렇..
-
[6월 둘째 주][알고리즘][DFS]프로그래머스 43165번 : 타겟 넘버Algorithm/코알못 알고리즘 스터디 2022. 6. 8. 16:02
📌 코알못 스터디 진행방식이 변경되었다. 자료구조에 대한 주제들에서 한 가지 주제를 선정하여, 이론을 학습한 후 관련 문제를 한 문제 이상 풀고 발표를 진행하기로 했다. 📌 주제 : 그래프 그래프 주제 중 DFS 문제를 선택했다. 프로그래머스 43165번 : 타겟 넘버 코딩테스트 연습 - 타겟 넘버 n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 programmers.co.kr
-
[6월 첫째 주 #5-1][알고리즘] 백준 10828번 : 스택Algorithm/코알못 알고리즘 스터디 2022. 6. 2. 23:53
이번 주 문제 1️⃣ 백준 10828번 : 스택 2️⃣ 프로그래머스 42586번 : 기능 개발 1️⃣ 백준 10828번 : 스택 10828번: 스택 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net ⎈ 문제 분석 스택을 구현하는 문제인데, 자바에서 잘 구현되어있는 Stack 클래스를 이용하는게 최선일 것 같다.. 입력을 처리하는 로직만 잘 구현하면 어렵지 않을 것 같다. ⎈ 코드 import java.io.*; import java.util.ArrayList; import java.util.Stack; import..
-
[5월 셋째 주 #2-2][알고리즘] 백준 1920번 : 수 찾기Algorithm/코알못 알고리즘 스터디 2022. 5. 25. 00:49
이번 주 문제 1️⃣ 백준 2744번 : 대소문자 바꾸기 2️⃣ 백준 1920번 : 수 찾기 2️⃣ 백준 1920번 : 수 찾기 1920번: 수 찾기 첫째 줄에 자연수 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 N개의 정수 A[1], A[2], …, A[N]이 주어진다. 다음 줄에는 M(1 ≤ M ≤ 100,000)이 주어진다. 다음 줄에는 M개의 수들이 주어지는데, 이 수들 www.acmicpc.net ⎈ 문제 분석 모두 정수로 주어지므로 크기 기준으로 sort 하여 탐색 범위를 줄이면 성능적으로 향상이 가능할 것 같다는 생각이 먼저 들었다. 하지만 조금 더 생각을 해보니, 단순히 모든 요소를 순회하며 확인하는 것에 비해 sort 작업이 결국 전체 요소를 모두 확인하는 과정이 추가되는 ..
-
[5월 셋째 주 #2-1][알고리즘] 백준 2744번 : 대소문자 바꾸기Algorithm/코알못 알고리즘 스터디 2022. 5. 22. 18:33
이번 주 문제 1️⃣ 백준 2744번 : 대소문자 바꾸기 2️⃣ 백준 1920번 : 수 찾기 1️⃣ 백준 2744번 : 대소문자 바꾸기 2744번: 대소문자 바꾸기 영어 소문자와 대문자로 이루어진 단어를 입력받은 뒤, 대문자는 소문자로, 소문자는 대문자로 바꾸어 출력하는 프로그램을 작성하시오. www.acmicpc.net ⎈ 문제 분석 문제를 읽자마자 떠오른 해결방안. 1. 문자열 순회하며 하나씩 처리 2. character 형으로 유니코드 관련하여 처리 유니코드 이용한 처리가 그냥 문자를 수정하는 것 보다 더 나은지에 대한 것을 고민한 결과, 소문자와 대문자를 char형 타입에서 구분하려면 유니코드를 이용하는 것이 구현 편의성이나 성능면에서도 더 나을 것으로 판단하였다. 👉 유니코드 표 유니 코드 문자..
-
[5월 둘째 주 #2-2][알고리즘] 백준 1541번 : 잃어버린 괄호Algorithm/코알못 알고리즘 스터디 2022. 5. 11. 09:21
이번 주 문제 1️⃣ 백준 5622번 : 다이얼 2️⃣ 백준 1541번 : 잃어버린 괄호 2️⃣ 백준 1541번 : 잃어버린 괄호 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 문제 분석 1 . ' + ' 와 ' - ' 만으로 이루어져 있으므로 연산자 사이의 우선순위는 없다. 2 . 항상 가장 최소의 값이 되는 경우를 추론해보자. 3 . 문제해결방법은 찾았으니 의사코드를 통해 어떤 자료구조로 어떻게 구현할 지 표현해보자... /* 의사코드 BlaBlaBla..... 완성 실패.. 1. 입력 처리 1-1..