목록분류 전체보기 (370)
GitHubSeob

문제 https://www.acmicpc.net/problem/14725 14725번: 개미굴 첫 번째 줄은 로봇 개미가 각 층을 따라 내려오면서 알게 된 먹이의 정보 개수 N (1 ≤ N ≤ 1000)개가 주어진다. 두 번째 줄부터 N+1 번째 줄까지, 각 줄의 시작은 로봇 개미 한마리가 보내준 먹이 정 www.acmicpc.net 문제풀이 트라이 문제이다. 입력으로는 알파벳 대문자로만 이루어진 string이 들어온다. 트라이는 map을 이용하여 자녀 트라이를, 깊이를 나타내는 depth, 문자열의 끝 여부를 나타내는 isEnd로 구성하였다. void insert(vector& v) { Trie* now = this; for (int idx = 0; idx < v.size(); ++idx) { if (..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/17679 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 꼭 2*2 블록만이 지워지는 것이 아닌 2*4, 3*3 이런 식으로 여러 형태로 지워질 수 도 있다. 따라서 모든 y, x를 탐색하면서 해당 블록과 인접한 3개의 블록이 같은지를 판별해야 한다. 해당 블록과 인접한 3개의 블록이 같은지, 범위를 벗어나는지, 이미 지운 블록인지를 판별하는 함수를 구현한다. 지워야 하는 블록을 지우는 함수를 구현한다. loc.insert({ -1,-1 ..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/17686 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 함수 2개와 stable_sort의 compare 함수를 구현했다. 함수는 대소문자 구분을 하지 않으므로 모든 대문자를 소문자로 변환하는 lower함수, 입력받은 문자열에는 띄어쓰기가 없으므로 istringstream 대신 직접 파싱 하는 findNum 함수이다. 소문자 변환 함수는 string의 문자 하나하나 tolower을 통해 바꾼다. pii findNum(string str)..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/154539 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 자신보다 뒤에 있는 숫자 중에서 자신보다 크고, 가장 가까이 있는 수를 뒷 큰 수라고 한다. 스택을 이용하여 {값, 인덱스}를 저장한다. 현재 탐색하고 있는 값이 스택의 top부분 보다 크면, 현재 값이 스택에 있는 모든 수의 뒷 큰 수가 된다. 반복문을 통해 스택의 top과 현재 값을 비교하여 뒷 큰 수가 되면 ansnwer에 인덱스들을 저장한다. 반복문이 종료되면 스택에 pus..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/84512 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 완전탐색으로 A부터 EEEEE까지 모든 경우의 수를 set에 저장한 뒤 A부터 탐색하여 풀었다. 미리 char형 배열을 선언하여 'A', 'E', 'I', 'O', 'U'를 저장한다. DFS를 통해 완전탐색을 한다. 6자리 이상은 구할 필요가 없으므로 cnt > 4이면 return 한다. (DFS를 실행하기 전에 미리 다음자리의 단어를 구하므로) 그 외의 경우는 현재 고른 알파벳의 ..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/49994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 좌표는 (-5, -5)부터 (5, 5)까지 11*11의 크기를 갖는다. 캐릭터는 (0, 0)의 위치에서 시작하고 4가지 명령어에 따라 움직이며, 좌표 평면을 벗어날 수 없다. 배열에 인덱스는 음수가 될 수 없으므로 (0, 0)부터 (10, 10)까지, 캐릭터는 (5, 5)의 위치에 있다고 두고 문제를 풀었다. bool isEnd(int y, int x) { if (y < 0 || y..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/49993 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 스킬은 항상 대문자만 주어진다. 스킬은 순서대로 배워야 하므로 벡터를 선언하여 스킬의 이름과 순서를 입력한다. 예제를 보면 skill = "CBD"이다. 이때, "BACDE"는 안 되는 이유가 C를 배워야 B를 배울 수 있기 때문이다. 따라서 현재 배우고 있는 스킬의 위치를 나타내기 위한 인덱스인 s_idx 변수를 두고, 스킬트리에 순서대로 배워야 하는 스킬이 나오면 s_idx와 같..

문제 https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제풀이 (1, 1) 위치에서 부터 시작하여 (N, M) 위치에 도달하는 모든 경우의 수 중 가장 짧은 길이를 찾는 문제이다. 최단거리를 구하는 문제이므로 BFS를 이용했다. 구조체를 선언하여 y, x의 좌표와, 거리를 나타내는 dist 변수를 둔다. 방문 벡터를 선언하여 이전에 방문한 적이 있는지 확인을 한다. 큐에 시작 지점을 집어넣고 큐가 빌 때까지 반복을 한다. 상, 하, 좌, 우 한 ..

문제 https://www.acmicpc.net/problem/2887 2887번: 행성 터널 첫째 줄에 행성의 개수 N이 주어진다. (1 ≤ N ≤ 100,000) 다음 N개 줄에는 각 행성의 x, y, z좌표가 주어진다. 좌표는 -109보다 크거나 같고, 109보다 작거나 같은 정수이다. 한 위치에 행성이 두 개 이 www.acmicpc.net 문제풀이 최근에 swea에서 풀어본 문제랑 비슷해 보여서 도전해 봤다. 크루스칼 알고리즘을 이용해 풀었다. 메모리 초과가 발생해서 질문글을 보니 행성의 개수가 최대 100,000개라 N^2의 간선이 아닌 3*N의 간선으로 풀어야 한다고 했다. 해당 질문글을 참고하여 간선을 구하는 방법을 바꿨다. 터널을 연결할 때 드는 비용은 두 행성 간의 x의 차, y의 차,..