본문 바로가기

Algorithm

(61)
[백준] 3078번: 좋은 친구 https://www.acmicpc.net/problem/3078 3078번: 좋은 친구 문제 상근이는 환갑을 바라보던 나이에 수능 시험을 다시보고 교대에 입학했고, 초등학교 선생님으로 취직했다. 상근: 요즘 애들은 친구를 사귀지 않나봐. 내가 앞에서 보고 있으면, 친구가 있는 학생이 별로 없는 것 같아. ??: 오빠! 오빠는 말콤의 친구와 성적이라는 책 안 읽어 봤어? 이 책에는 성적과 친구가 무슨 관계가 있는지 나와. 요즘 애들은 친구를 사귀기 전에 먼저 그 친구의 반 등수를 살펴봐. 말콤은 이 연구를 하기 위해서 6년동안 초등학교에서 선 www.acmicpc.net 큐 연습문제. 풀이를 보고 구현했다. 그냥 배열로 풀면 시간복잡도가 O(N^2)이 되는데 N이 300,000 이하이므로.. 배열로는 풀..
[프로그래머스] 주식가격 https://programmers.co.kr/learn/courses/30/lessons/42584 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 스택을 이용하면 효율적으로 풀 수 있는 문제. 가격이 떨어지지 않는 동안 스택에 가격 정보를 담아두고 가격이 떨어지면 스택을 pop하는 방식으로 풀면 된다. #include #include #include using namespace std; vector solution(vector prices) { vector answer(prices.size()); stack price_stack; price_stack...
[백준] 10993번: 별 찍기 - 18 https://www.acmicpc.net/problem/10993 10993번: 별 찍기 - 18 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요. www.acmicpc.net 재밌어보여서 풀기 시작했다가 복잡해서 당황했다..;; 출력 삼각형을 잘 관찰해보면 가장 큰 삼각형 안에 이전 수준의 삼각형이 있고, 또 그 안에 이전 수준의 삼각형이 있고... 를 반복하는 것을 알 수 있다. 삼각형의 크기는 이전 수준의 삼각형의 대략 2배정도이므로 지수승으로 커진다. 이 점을 이용해서 top-down(재귀) 방식이나 bottom-up(for문) 방식으로 풀면 되는데 나는 for문으로 풀었다. 한줄짜리 string을 저장하는 덱을 선언한 뒤, 가장 작은 삼각형부터 덱에 넣는다. 그리고 그보다 한단계 큰 삼각형을..
[백준] 3190번: 뱀 https://www.acmicpc.net/problem/3190 3190번: 뱀 문제 'Dummy' 라는 도스게임이 있다. 이 게임에는 뱀이 나와서 기어다니는데, 사과를 먹으면 뱀 길이가 늘어난다. 뱀이 이리저리 기어다니다가 벽 또는 자기자신의 몸과 부딪히면 게임이 끝난다. 게임은 NxN 정사각 보드위에서 진행되고, 몇몇 칸에는 사과가 놓여져 있다. 보드의 상하좌우 끝에 벽이 있다. 게임이 시작할때 뱀은 맨위 맨좌측에 위치하고 뱀의 길이는 1 이다. 뱀은 처음에 오른쪽을 향한다. 뱀은 매 초마다 이동을 하는데 다음과 같은 규칙을 따 www.acmicpc.net 문제가 길고 난해하다. 구현을 위해서는 조건을 세세하게 잘 읽어봐야 한다. 1. 뱀 머리를 늘린 후 꼬리 줄이기 2. 보드 행열의 인덱스는 1~..
[백준] 5397번: 키로거 https://www.acmicpc.net/problem/5397 5397번: 키로거 문제 창영이는 강산이의 비밀번호를 훔치기 위해서 강산이가 사용하는 컴퓨터에 키로거를 설치했다. 며칠을 기다린 끝에 창영이는 강산이가 비밀번호 창에 입력하는 글자를 얻어냈다. 키로거는 사용자가 키보드를 누른 명령을 모두 기록한다. 따라서, 강산이가 비밀번호를 입력할 때, 화살표나 백스페이스를 입력해도 정확한 비밀번호를 알아낼 수 있다. 강산이가 비밀번호 창에서 입력한 키가 주어졌을 때, 강산이의 비밀번호를 알아내는 프로그램을 작성하시오. 입력 첫째 줄에 테 www.acmicpc.net list로 푸는게 속도가 더 빠를 것이라고 생각했는데 deque으로 푸는게 더 빨랐다. deque이 list보다 메모리를 덜 잡아먹어서 그..
[백준] 1021번: 회전하는 큐 https://www.acmicpc.net/problem/1021 1021번: 회전하는 큐 첫째 줄에 큐의 크기 N과 뽑아내려고 하는 수의 개수 M이 주어진다. N은 50보다 작거나 같은 자연수이고, M은 N보다 작거나 같은 자연수이다. 둘째 줄에는 지민이가 뽑아내려고 하는 수의 위치가 순서대로 주어진다. 위치는 1보다 크거나 같고, N보다 작거나 같은 자연수이다. www.acmicpc.net #include #include using namespace std; deque dq; int N, M; int arr[50]; int cnt = 0; void moveLeft() { int front = dq.front(); dq.pop_front(); dq.push_back(front); } void moveR..
[알고리즘] Linked List(연결 리스트) https://kks227.blog.me/220781402507 리스트(List), 배열(Array), 연결 리스트(Linked List) 오랜만입니다. 논문 읽다가 멘붕이 와서 빠르게 글 씁니다.원래는 이번 차례에 DFS를 강의하려고 했으나... blog.naver.com (이분 블로그를 정리하기 위해 쓰는 글입니다.) list란 선형적으로 값을 가지고 있는 자료구조이다. linked list란 배열과 같이 어떤 자료구조를 구현하는 프로그래밍 기법이다. linked list나 배열을 이용해서 list를 구현할 수 있으며, 두 방법 모두 각각의 장단점을 가지고 있다. 배열로 구현할 때 장점: 랜덤 액세스가 가능하다(O(1)의 시간복잡도) 단점: 삽입, 삭제 연산이 오래걸린다(삽입, 삭제 연산하는 위치 뒤..
[백준] 16500번: 문자열 판별 https://www.acmicpc.net/problem/16500 16500번: 문자열 판별 첫째 줄에 길이가 100이하인 문자열 S가 주어진다. 둘째 줄에는 A에 포함된 문자열의 개수 N(1 ≤ N ≤ 100)이 주어진다. 셋째 줄부터 N개의 줄에는 A에 포함된 단어가 한 줄에 하나씩 주어진다. A에 포함된 문자열은 알파벳 소문자로만 이루어져 있고, 길이는 100을 넘지 않는다. www.acmicpc.net 한참동안이나 붙들고 있었던 문제..ㅠㅠ 처음에는 정말 간단하게 아래와 같이 입력이 주어졌을 때 softwarecontest 2 software contest 문자열 S에서 단어를 하나씩 지워가면서 문자열을 모두 지울 수 있는지를 검사하면 된다고 생각했었는데 틀린 접근법이었다. 반례는 soft, s..