목록알고리즘 (89)
개발자 김수진
[문제] https://programmers.co.kr/learn/courses/30/lessons/59410 코딩테스트 연습 - NULL 처리하기 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디 programmers.co.kr [풀이] sql 문제로 IFNULL을 사용해 이름이 NULL이면 "No name"으로 채워줬다. 또한 ANIMAL_ID를 기준으로 오름차순으로 정렬 IFNULL(필드명, "대체할 값") : 필드가 Null이면 대체할 값으로 채운다. [코드] S..
[문제] https://programmers.co.kr/learn/courses/30/lessons/42884 코딩테스트 연습 - 단속카메라 [[-20,15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr [풀이] 차량 이동경로를 sort 함수를 사용해 오름차순으로 정렬한다. 첫번째 이동경로의 진출 지점을 CCTV의 위치로 초기화 두번째 이동경로부터 마지막 이동경로까지 현재 이동경로의 진출 지점이 CCTV의 위치보다 앞에 있는 경우 => CCTV의 위치만 update 현재 이동경로의 진입 지점이 CCTV의 위치보다 뒤에 있는 경우 => CCTV의 위치 update, CCTV 설치 갯수 1 증가. [코드] #include #include #include usin..
[문제] https://www.acmicpc.net/problem/15683 15683번: 감시 스타트링크의 사무실은 1×1크기의 정사각형으로 나누어져 있는 N×M 크기의 직사각형으로 나타낼 수 있다. 사무실에는 총 K개의 CCTV가 설치되어져 있는데, CCTV는 5가지 종류가 있다. 각 CCTV가 감�� www.acmicpc.net [풀이] DFS를 사용해 각 CCTV에 대해 모든 경우의 수를 따져주고 최솟값을 구하면 된다. [그림 1]과 같이 DFS 함수에서 visited 배열에 CCTV가 감시할 방향을 저장해놓고 모든 CCTV에 대해 저장했다면 solve 함수에서 방향에 맞게 감시 진행 이런 방식으로 spread 함수에서 좌표랑 방향을 인자 값으로 넘겨주고 벽을 만나기 전까지 감시할 수 있는 좌표에..
[문제] https://www.acmicpc.net/problem/14890 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 시뮬레이션 문제로 높이가 같은 경우 -> 다음 index로 넘어감 높이가 다른 경우 -> 차이가 1보다 큰지 확인 행과 열을 올렸다 하나의 일차원 배열에 옮겨서 확인 (어차피 행과 열 확인하는 방법은 같으니까) [풀이] 1. check 함수 다음 인덱스랑 높이 비교 높이차가 같은 경우 다음 인덱스로 넘어감. 높이차가 1보다 크다면 check 함수 바로 return. 높이차가 1인 경우 comp 함수 호출. 0부..
[문제] https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRUN9KfZ8DFAUo&categoryId=AWXRUN9KfZ8DFAUo&categoryType=CODE SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com [풀이] 시뮬레이션 문제인 것 같다. 문제 조건만 잘 따져주면서 풀면 된다. N개의 숫자를 입력 받아서 사각형 각 변에 존재하는 숫자 조합 중에서 K번째로 큰 수를 구하면 된다. (숫자 조합이 중복되는 것이 없도록 주의) 1. 회전하기 사각형에 존재하는 각 숫자들은 시계방향으로 한칸씩 이동한다. => 총 N/..
벡터 시간 오래 걸릴까봐 안 쓰고 풀었는데 오히려 벡터 사용하니까 더 빠르다. DFS로 접근 - 벡터 대신 반복문 사용 시간 : 124ms #include #define MAX 20 using namespace std; int N; int map [MAX][MAX]={0,}; int visited[20]={0,}; int MIN = 1e9; void solve() { int start=0; int link=0; for(int i=0;i N; for(int i=0;i
[풀이 1] 처음에 시뮬레이션인줄 알고 조건 하나씩 다 따지면서 아래와 같이 구현 #include using namespace std; //0: 빈칸, 1:벽 int N,M; int map[50][50]; int dir; int x,y; int cnt=0; // number of clean space by robot //0:북 , 1:동, 2:남, 3:서 int dx[4] = {-1,0,1,0}; int dy[4] = {0,1,0,-1}; int main(void) { cin >> N >> M ; cin >> x >> y >> dir; for(int i=0;i map[i][j]; } while(1){ if(map[x][y]==0){ map[x][y]=2; //현재 위치 청소 cnt++; } int pdi..
#include using namespace std; int N,M,K; int map[20][20]={0,}; int x,y; int dx[4] ={0,0,-1,1}; int dy[4] = {1,-1,0,0}; int dice[7]={0,}; //지도 위 : 1 , 동쪽 : 3 , // 처음 주사위 모든 면에 0 // 이동한 칸이 0인 경우 -> 주사위에 있는 숫자가 바닥면으로 // 0이 아닌 경우 -> 주사위로 복사되고 칸은 0으로 int main(void) { cin >> N >> M >> x >> y >> K; for(int i=0;i map[i][j]; } for(int i=0;i> dir; int nx = x + dx[dir-1]; int ny = y + dy[dir-1]; if( nx < 0..