본문 바로가기

algorithm

(135)
프로그래머스_숫자 야구(C++) https://programmers.co.kr/learn/courses/30/lessons/42841 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] 완전탐색을 이용하여 문제를 풀었습니다. 1~9로 나올 수 있는 세 자리 수 조합 123 ~ 987을 입력으로 들어오는 baseball 벡터의 크기만큼 반복을 하며 추정값을 찾았습니다. 123 ~ 987수를 확인할 때 0이 들어가거나 같은 수가 반복되면 continue 하였고 벡터만큼 반복을 할 때에는 확인하고자 하는 값이 주어진 입력의 스트라이크와 볼 값과 모두 같은지 확인한 후 같으면 값을 증..
백준 16236_아기 상어(C++) https://www.acmicpc.net/problem/16236 16236번: 아기 상어 N×N 크기의 공간에 물고기 M마리와 아기 상어 1마리가 있다. 공간은 1×1 크기의 정사각형 칸으로 나누어져 있다. 한 칸에는 물고기가 최대 1마리 존재한다. 아기 상어와 물고기는 모두 크기를 가지고 있고, 이 크기는 자연수이다. 가장 처음에 아기 상어의 크기는 2이고, 아기 상어는 1초에 상하좌우로 인접한 한 칸씩 이동한다. 아기 상어는 자신의 크기보다 큰 물고기가 있는 칸은 지나갈 수 없고, 나머지 칸은 모두 지나갈 수 있다. 아기 상어는 자신의 크 www.acmicpc.net [문제 풀이] 시뮬레이션을 이용하여 문제를 풀었습니다. 이 문제는 더 이상 먹을 수 있는 물고기가 공간에 없다면 아기 상어는 엄마 ..
백준 15684_사다리 조작(C++) https://www.acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선이 같은 위치를 갖는다. 아래 그림은 N = 5, H = 6 인 경우의 그림이고, 가로선은 없다. 초록선은 세로선을 나타내고, 초록선과 점선이 교차하는 점은 가로선을 놓을 수 있는 점이다. 가로선은 인접한 두 세로선을 연결해야 한다. 단, 두 가로선이 연속하거나 서로 www.acmicpc.net [문제 풀이] 시뮬레이션을 이용하여 문제를 풀었습니다. 이 문제는 시작 지점 사다리 번호와 도착 지점 사다리 번호를 같게 만드는 문..
백준 15686_치킨 배달(C++) https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸, 왼쪽에서부터 c번째 칸을 의미한다. r과 c는 1부터 시작한다. 이 도시에 사는 사람들은 치킨을 매우 좋아한다. 따라서, 사람들은 "치킨 거리"라는 말을 주로 사용한다. 치킨 거리는 집과 가장 가까운 치킨집 사이의 거리이다. 즉, 치킨 거리는 www.acmicpc.net [문제 풀이] 조합을 이용하여 문제를 풀었습니다. 도시의 치킨집 중에 M개를 조합을 이용하여 골라줍니다. M개의 치킨집이 선택되었다면..
프로그래머스_N으로 표현(C++) https://programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] DP를 이용하여 문제를 풀었습니다. set을 선언하여 나올수 있는 경우를 메모제이션을 해주었습니다. 1 ~ 8 까지 반복문을 통해 돌면서 i가 나올 수 n_set[j], n_set[i - j]을 이용하여 사칙연산 계산을 해주었습니다. [코드] #include #include #include using namespace std; set n_set[9]; int solution(int N, int ..
백준 14889_스타트와 링크(C++) https://www.acmicpc.net/problem/14889 14889번: 스타트와 링크 예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다. www.acmicpc.net [문제 풀이] 완전탐색을 이용하여 문제를 풀었습니다. 스타트 팀과 링크 팀이 가질 수 있는 맴버의 경우 수를 모두 고려하여 check 배열에 메모제이션을 해줍니다. 그 후 반복문을 통해 스타트 팀과 링크 팀의 점수를 비교하여 가장 작은 수를 찾아 주었습니다. [코드] #include using namespace std; int map[21][21]; int check[21] = { 0, }; int N; int res..
프로그래머스_모의고사(C++, JAVA) https://programmers.co.kr/learn/courses/30/lessons/42895 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr [문제 풀이] 단순 탐색을 이용하여 문제를 풀었습니다. 세 사람의 패턴을 세 개의 배열에 저장해둔 후 반복을 통하여 문제를 풀었습니다. [C++] #include #include using namespace std; int p1[5] = { 1,2,3,4,5 }; int p2[8] = { 2,1,2,3,2,4,2,5 }; int p3[10] = { 3,3,1,1,2,2,4,4,5,5 }; vector solu..
백준 14891_톱니바퀴(C++) https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 시계방향 순서대로 주어진다. N극은 0, S극은 1로 나타나있다. 다섯째 줄에는 회전 횟수 K(1 ≤ K ≤ 100)가 주어진다. 다음 K개 줄에는 회전시킨 방법이 순서대로 주어진다. 각 방법은 두 개의 정수로 이루어져 있고, 첫 번째 정수는 회전시킨 톱니바퀴 www.acmicpc.net [문제 풀이] 시뮬레이션을 이용하여 문제를 풀었습니다. 이 문제는 주어진 상황을 순서대로 진행해주는 것이 문제의 핵심입니다. 이 코드..