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

문제 https://www.acmicpc.net/problem/3108 3108번: 로고 로고는 주로 교육용에 쓰이는 프로그래밍 언어이다. 로고의 가장 큰 특징은 거북이 로봇인데, 사용자는 이 거북이 로봇을 움직이는 명령을 입력해 화면에 도형을 그릴 수 있다. 거북이는 위치와 www.acmicpc.net 문제풀이 문제를 잘못 본 것도 있고 무작정 코드를 짜다가 길어지고 복잡해져서 다른 풀이를 참조하여 풀었다. 구현부를 크게 두 가지로 나눌 수 있다. 첫 번째는 좌표를 입력받아 2차원 벡터를 선언하고 해당 좌표에 표시하기, 두 번째는 DFS이다. 문제에서 전진, 회전 이런 건 무시하고 연필을 올리는 명령어인 PU명령어에만 집중하면 된다. 먼저 좌표는 -500부터 500까지 있으니 크기는 1000이다. 하지..

문제 https://www.acmicpc.net/problem/3184 3184번: 양 첫 줄에는 두 정수 R과 C가 주어지며(3 ≤ R, C ≤ 250), 각 수는 마당의 행과 열의 수를 의미한다. 다음 R개의 줄은 C개의 글자를 가진다. 이들은 마당의 구조(울타리, 양, 늑대의 위치)를 의미한다. www.acmicpc.net 문제풀이 DFS로 풀었다. visit함수를 따로 만들지 않고 방문을 했으면 #표시를 했다. 울타리 안에서 상하좌우 어디로든 갈 수 있다. 전역 변수로 양 o, 늑대 v를 만들어서 메인 문에서 o과 v를 초기화하고 DFS함수를 실행한다. 메인 문에서 DFS는 #를 제외한., v, o일 때만 실행한다. 근처에 가지 않은 곳은 울타리밖에 없어 더 이상 갈 수 없을 때 메인 문으로 돌아..

문제 https://www.acmicpc.net/problem/2186 2186번: 문자판 첫째 줄에 N(1 ≤ N ≤ 100), M(1 ≤ M ≤ 100), K(1 ≤ K ≤ 5)가 주어진다. 다음 N개의 줄에는 M개의 알파벳 대문자가 주어지는데, 이는 N×M 크기의 문자판을 나타낸다. 다음 줄에는 1자 이상 80자 이하의 www.acmicpc.net 문제풀이 DFS로만 풀었는데 시간초과가 났다. 질문글+블로그를 보고 3차원 DP+DFS로 바꿔 풀었다. DP[y][x][word_cnt]로 두고 같은 글자수 일때 이미 저장된 값이 있다면 DFS를 하지않고 DP의 값을 이용한다. 방문하지 않은 곳은 -1, 방문을 하면 0으로 바꾸고 DFS를 하여 값을 저장한다. 대충 DP는 이런 느낌이다. 3차원이라 DP..

문제 https://www.acmicpc.net/problem/2251 2251번: 물통 각각 부피가 A, B, C(1≤A, B, C≤200) 리터인 세 개의 물통이 있다. 처음에는 앞의 두 물통은 비어 있고, 세 번째 물통은 가득(C 리터) 차 있다. 이제 어떤 물통에 들어있는 물을 다른 물통으로 쏟아 부 www.acmicpc.net 문제풀이 물을 옮기는 경우는 A->B, A->C B->A, B->C C->A, C->B 총 6가지가 있다. n번 물통에서 m번 물통으로 물을 옮긴다 가정하자. n번 물통이 빌 때까지 m번 물통으로 옮기는 경우와, m번 물통이 꽉 차 n번에서 더 이상 옮길 수 없는 경우가 있다. 이걸 식으로 나타내면 물통 M은 min(max_M, N+M), 물통 N은 N+M - min(ma..

문제 https://www.acmicpc.net/problem/1525 1525번: 퍼즐 세 줄에 걸쳐서 표에 채워져 있는 아홉 개의 수가 주어진다. 한 줄에 세 개의 수가 주어지며, 빈 칸은 0으로 나타낸다. www.acmicpc.net 문제풀이 3x3퍼즐을 1차원 배열로 나타내고, visit를 set로 만들었다. 퍼즐을 옮기고 해당 모양이 있는지 visit를 통해 확인을 하고, 없으면 visit에 해당 모양을 추가하고 큐에 push 했다. visit에 이미 있으면 다음으로 넘어간다. BFS를 통해 풀었고 단순하게 0의 위치에 따라 바꿀수 있는 경우를 모두 if, else if문을 써서 해결했다. void CanPush(queue& q, vectorpuzzle, int num1, int num2, in..

문제 https://www.acmicpc.net/problem/16496 16496번: 큰 수 만들기 첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 리스트에 포함된 수가 주어진다. 수는 공백으로 구분되어져 있고, 1,000,000,000보다 작거나 같은 음이 아닌 정수 이다. 0을 제외한 나 www.acmicpc.net 문제풀이 Compare함수를 만들어 조건대로 정렬하게 했다. 0을 제외한 나머지 수는 0으로 시작하지 않으며, 0이 주어지는 경우 0 하나가 주어진다. 라는 문장인데 0이 딱 한번만 주어진다는것으로 이해했다. 하지만 0이 여러개 주어질수도 있다.0이 여러개면 0만 출력하고 끝나야하지만 문제를 잘못 이해해 0의 개수만큼 0을 출력했었다.그걸 고치고 나니까 바로..

문제 https://www.acmicpc.net/problem/9019 9019번: DSLR 네 개의 명령어 D, S, L, R 을 이용하는 간단한 계산기가 있다. 이 계산기에는 레지스터가 하나 있는데, 이 레지스터에는 0 이상 10,000 미만의 십진수를 저장할 수 있다. 각 명령어는 이 레지스터에 www.acmicpc.net 문제풀이 D는 2n , 단 10000이 넘으면 나머지 연산을 한다. S는 n-1, n이 0이라면 n-1=9999 L은 d1 d2 d3 d4 -> d2 d3 d4 d1 R은 d1 d2 d3 d4 -> d4 d1 d2 d3 주의할 점은 123 이면 L연산을 하면 1230, R연산을 하면 3012가 된다. 처음에는 string형으로 변환하고 swap 해서 바꾸고 그랬지만 시간이 오래 ..

문제 https://www.acmicpc.net/problem/1963 1963번: 소수 경로 소수를 유난히도 좋아하는 창영이는 게임 아이디 비밀번호를 4자리 ‘소수’로 정해놓았다. 어느 날 창영이는 친한 친구와 대화를 나누었는데: “이제 슬슬 비번 바꿀 때도 됐잖아” “응 지금 www.acmicpc.net 문제풀이 A에서 B로 숫자를 바꾸는 과정에서도 항상 소수를 유지해야 한다. 먼저 에라토스테네스의 체를 이용하여 소수를 구한다. prime벡터는 소수가 아니면 false를, 소수이면 true이다. 숫자를 바꿀 때 임시로 int형에서 string형으로 바꾸고 이중 반복문으로 모든 자리를 0부터 9까지 바꾼다. 바꾼 번호가 목표하는 번호와 같다면 cnt+1을 하여 출력해준다. 그렇지 않다면 다시 int형으..

문제 https://programmers.co.kr/learn/courses/30/lessons/12947 코딩테스트 연습 - 하샤드 수 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하 programmers.co.kr 문제풀이 sum에 10으로 나눈 나머지를 계속 더하고 x는 10으로 나눈다. x가 0이 되면 num% sum을해서 0이 나오면 true를, 나머지가 있으면 false를 return 한다. 코드 #include #include using namespace std; bool solution(int x) { bool answer = t..