목록알고리즘 문제풀이 (121)
거의 알고리즘 일기장
www.acmicpc.net/problem/1400 1400번: 화물차 입력은 여러 개의 테스트 케이스로 구성된다. 각 테스트 케이스의 첫째 줄에는 두 개의 정수 m과 n이 주어진다, 여기서 m은 지도를 나타내는 행렬의 행의 크기이고 n은 열의 크기이다(2 ≤ m, n ≤ 2 www.acmicpc.net 코드 #include #include #include #include using namespace std; class TrafficLight { public: int y; int x; char startlight; int eastWestTime; int southNorthTime; }; class BfsData { public: int y; int x; int currentTime; vector visi..
www.acmicpc.net/problem/19236 19236번: 청소년 상어 첫째 줄부터 4개의 줄에 각 칸의 들어있는 물고기의 정보가 1번 행부터 순서대로 주어진다. 물고기의 정보는 두 정수 ai, bi로 이루어져 있고, ai는 물고기의 번호, bi는 방향을 의미한다. 방향 bi는 www.acmicpc.net 코드 #include #include #include using namespace std; class Fish { public: bool isAlive = true; short y; short x; short dir; Fish() {} Fish(int y_in, int x_in, int dir_in) :y(y_in), x(x_in), dir(dir_in) {} }; int board[4][4]..
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. 먼저 상어를 클래스로 정의해두었다. class Shark { public: bool isAlive = true; int y; int x; int dir; Shark(){} Shark(int y_in, int x_in):y(y_in), x(x_in){} }; 2. 방향의 우선순위와 냄새에 관한 배열, 상어의 현황을 표시해주는 맵등을 정의해주었다. //id..
swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWXRFInKex8DFAUo SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이방법 간단하게만 설명하자면 1. board를 [4001][4001]로 확장시킨다. 왜냐하면 0.5움직일때 부닥치는 경우도 있기때문에 2. 좌표를 (주어지는 좌표)*2 + 2000 로 재계산해서 저장 3. 원자들을 움직인다. 이때 좌표값이 0 N; int x, y, dir, k; for (int i = 0; i > x >> y >> dir >> k; x = x * 2 + 2000;..
swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5VwAr6APYDFAWu SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 풀이방법 내가 푼 방식의 아이디어의 핵심은 w, h를 만들어서 방향이 3번일때 부터 w, h만큼 사각형을 만들어 비교하는 방식으로 풀었다. 밑의 그림을 보면 이해가 빠르다. 그외는 주석을 참고하길 바란다. 코드 #include #include #include using namespace std; int N; int dy[4] = { 1, 1, -1, -1 }; int dx[4] = { 1, -1, -1, 1 };..
programmers.co.kr/learn/courses/30/lessons/17678 코딩테스트 연습 - [1차] 셔틀버스 10 60 45 [23:59,23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59, 23:59] 18:00 programmers.co.kr 풀이방법 1. 셔틀시간 09:00 ~ 23:59 2. 콘은 최대한 가장 늦은 시간을 탐. 3. 콘은 게으르기 때문에 같은 시각에 도착한 크루 중 대기열에서 제일 뒤에 선다. 위의 조건을 고려해서 짜면된다. 내 로직을 간단히 설명하자면 1. 버스의 도착시간과 크루가 대기열에 선 시간을 모두 vector형태의 자료에다가 넣는다. ..
programmers.co.kr/learn/courses/30/lessons/60059 코딩테스트 연습 - 자물쇠와 열쇠 [[0, 0, 0], [1, 0, 0], [0, 1, 1]] [[1, 1, 1], [1, 1, 0], [1, 0, 1]] true programmers.co.kr 풀이방법 1. 열쇠 4방향으로 회전한 값 저장 2. 확장된 배열을 만들어서 자물쇠와 키가 맞는지 확인! 3. n, m의 최대값이 작아서 충분히 하나하나 비교해서 풀어도 가능! (회전방향(4) x (m-1+n)^2 x n^2)정도의 연산이라 충분!! 코드 #include #include #include using namespace std; vector originBoard; vector allRotationKey; int m,..
programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴� programmers.co.kr 풀이방법 이 문제는 솔루션이 다 주어진다. 진짜로 주어진 조건에 맞춰서 그대로 진짜 그대로~ 하면 된다. 코드 #include #include #include #include #include using namespace std; //check함수 bool CheckStr(string str) { stack dish; for (char ch : str) { //dish가 비어있..
programmers.co.kr/learn/courses/30/lessons/60057# 코딩테스트 연습 - 문자열 압축 데이터 처리 전문가가 되고 싶은 어피치는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문자 programmers.co.kr 풀이방법 1. 문자를 나누는 숫자 1 ~ 주어진문자열의 길이/2 for문 2. 비교 3. 줄어드는 숫자 = (원래길이) - (나중에 나오는 길이) 코드 #include #include #include #include using namespace std; int solution(string s) { int answer = 0; //1. 단위 for(int divNum =..
programmers.co.kr/learn/courses/30/lessons/42840 코딩테스트 연습 - 모의고사 수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 �� programmers.co.kr 쉽지만 귀찮은 문제 1. 수험생 1, 2, 3의 루틴을 주어진 answers의 사이즈에 맞춰서 반복시켜 답안을 만들어준다. 2. 답안을 확인한다. 3. 제일 잘 맞춘 아이를 answer에 넣는다. 4. 정렬한다. 코드 #include #include #include using namespace std; vector solution(vector answers) { vect..