본문 바로가기

전체 글

(118)
프로그래머스 : 기능개발 c++ programmers.co.kr/learn/courses/30/lessons/42586?language=cpp 코딩테스트 연습 - 기능개발 프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 programmers.co.kr #include #include using namespace std; vector solution(vector progresses, vector speeds) { vector answer; queue a; int left, data, result=0; for(int i=0;i
프로그래머스 : 베스트앨범 C++ programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 programmers.co.kr 풀이 1) 장르당 총 재생횟수를 구하자, genre랑 play의 크기는 동일함 2) map을 value값에 대해 정리하려면 벡터에 옮겨야된다!! -> key값에 대해 정렬하려면 map a; 선언할때 이렇게 3) 옮겼으면 정렬 4) 이제 1등. 2등 두개를 play 벡터를 탐색하면서 정하기 5) 장르에 속한 노래가 한곡인 경우도 있으니 예외처리! 코드 #include #inc..
백준 1938 : 통나무 옮기기 c++ www.acmicpc.net/problem/1938 1938번: 통나무 옮기기 첫째 줄에 주어진 평지의 한 변의 길이 N이 주어진다. (4 상하좌우로 움직이는거는 기존이랑 동일하게!! 다만 방향고려해서 양 끝에도 나무 없는지 추가 확인해야된다 -> 회전을 추가! 3. 여기서 입력은 char 로 받으니까 나무 위치 비교할때 '1'인거 주의!!!!!!! ex) 구현 필요 1. wood 구조를 만든다 -> 센터 위치랑 가로 세로 여부 판단 -> way 0: 가로 1: 세로 2. 회전 가능 여부 -> 센터를 주위로 3X3 배열 구현 #include #include #include #include #include using namespace std; struct wood { pair center; int way;..
백준 19237 : 어른 상어 C++ www.acmicpc.net/problem/19237 19237번: 어른 상어 첫 줄에는 N, M, k가 주어진다. (2 ≤ N ≤ 20, 2 ≤ M ≤ N2, 1 ≤ k ≤ 1,000) 그 다음 줄부터 N개의 줄에 걸쳐 격자의 모습이 주어진다. 0은 빈칸이고, 0이 아닌 수 x는 x번 상어가 들어있는 칸을 의미 www.acmicpc.net 풀이 1. 상어는 일단 shark라는 struct 만들어서 관리 -> 생존 여부 -> 현재 위치, 방향 -> 방향 우선순위들 2. map은 두개만들어서 관리 1) 상어들 2) 채취 정보 -> 누가 남겼는지, 몇턴 남았는지 3. 입력 다 받고 while문 돌린다. 탈출하는건 두가지! 1) 상어가 1번만 남음 2) 1000 이상! // 초과 아니다!!!!!!!!!! if..
백준 19238 : 스타트 택시 c++ www.acmicpc.net/problem/19238 19238번: 스타트 택시 첫 줄에 N, M, 그리고 초기 연료의 양이 주어진다. (2 ≤ N ≤ 20, 1 ≤ M ≤ N2, 1 ≤ 초기 연료 ≤ 500,000) 연료는 무한히 많이 담을 수 있기 때문에, 초기 연료의 양을 넘어서 충전될 수도 있다. 다 www.acmicpc.net 전체 풀이 1. 택시를 taxi라는 struct 하나 만들고 그걸로 관리 2. 손님을 지금 위치랑 목적지 함께 저장해서 vector에 저장해둠 -> 후에 이 벡터가 다 비면 모든 손님 다 대려다줬다는거임 3. while문 돌리기 1) 처음에 택시에서 제일 위치 가깝고, 행 제일 작고, 열 제일 작은놈 찾음 2) 택시 거기로 이동 시키고 연료도 그만큼 깎음 - 가다가 연료 ..
백준 17142 c++ : 연구소 3 www.acmicpc.net/problem/17142 17142번: 연구소 3 인체에 치명적인 바이러스를 연구하던 연구소에 승원이가 침입했고, 바이러스를 유출하려고 한다. 바이러스는 활성 상태와 비활성 상태가 있다. 가장 처음에 모든 바이러스는 비활성 상태이고 www.acmicpc.net 고생한 포인트 1. 모두 활성화 시키는게 아니라 모두 바이러스로 채워야한다는 포인트를 제대로 못봤다!! -> 무슨 뜻이냐, 2는 남아있어도 되고 0만 없으면 된다!! -> 요런 경우 2. 시간초과로 고생했다. -> while문으로 BFS 레벨 한번마다 0이 남아있나 없나 여부를 확인했더니 시간초과가 떠버리더라 -> 0찾는거를 그냥 while문 밖으로 뺴면 while 문안에서 1과 2만 남는 경우를 캐치를 못하더라 3. ..
백준 1726 : 로봇 c++ www.acmicpc.net/problem/1726 1726번: 로봇 많은 공장에서 로봇이 이용되고 있다. 우리 월드 공장의 로봇은 바라보는 방향으로 궤도를 따라 움직이며, 움직이는 방향은 동, 서, 남, 북 가운데 하나이다. 로봇의 이동을 제어하는 명령어는 �� www.acmicpc.net 풀이겸 후기 1. 다른 BFS랑 다르게 추가로 생각해야되는 부분이 쫌 많았다 1) 그냥 기존 깊이에따라 cnt 할때랑 다르게 방향전환 을 고려해야되서 평소의 4방향 좌표 변환 전에 cnt를 미리 정해두는 방식을 쓸 수 없었다 -> struct로 묶어서 queue에 삽입 2) 각 좌표별로 바라보는 방향에 따른 visited 배열을 관리해야됬다 -> int visited[100][100][5]; 3) 여러방향에서 하나의..
백준 11559 : Puyo Puyo c++ www.acmicpc.net/problem/11559 후기 겸 풀이 1. 생각보다 쉬운 문제다 구현만 잘하면 된다 2. 한 루프당 부셔질수 있는 블록들 체크 -> (부술수 있는게 없으면 게임 종료) -> 부셔질 블록들 제거 -> 부셔지고 남은 자리 채우기 반복 #include #include #include #include using namespace std; char map[12][6];// 뿌요뿌요 int check[12][6] = { 0, }; int visited[12][6] = { 0, }; vector team; int d_r[4] = { 1,-1,0,0 }; int d_c[4] = { 0,0,1,-1 }; bool break_possible() { for (int i = 0; i < 12; ..