목록알고리즘 (192)
곽로그
문제 programmers.co.kr/learn/courses/30/lessons/60058 코딩테스트 연습 - 괄호 변환 카카오에 신입 개발자로 입사한 콘은 선배 개발자로부터 개발역량 강화를 위해 다른 개발자가 작성한 소스 코드를 분석하여 문제점을 발견하고 수정하라는 업무 과제를 받았습니다. 소스를 컴 programmers.co.kr 풀이 문제그대로! 코드 /* 1. 입력이 빈 문자열인 경우, 빈 문자열을 반환합니다. 2. 문자열 w를 두 "균형잡힌 괄호 문자열" u, v로 분리합니다. 단, u는 "균형잡힌 괄호 문자열"로 더 이상 분리할 수 없어야 하며, v는 빈 문자열이 될 수 있습니다. 3. 문자열 u가 "올바른 괄호 문자열" 이라면 문자열 v에 대해 1단계부터 다시 수행합니다. 3-1. 수행한 ..
문제 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 풀이 최대 M개에 대한 치킨집에 대해서 각 집의 치킨거리의 합을 구한다음 구한 치킨거리 중 최솟값을 구하면 된다 그러려면 우선 지도에 있는 치킨 집 중에서 1~M개의 치킨집을 선택해야한다. 이 문제는 15650번: N과 M (2) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해 www.acmicpc...
문제 www.acmicpc.net/problem/20057 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net 풀이 반복의 기본단위를 생각해보면 아래와 같다 현재위치에서 다음위치로 이동 → 다음위치에 있는 모래 뿌리기 → 이동한 위치를 현재위치로 업데이트 그럼이제 여기서 위의 반복을 언제까지 반복하는지를 생각해보면 "현재위치에서 다음위치로 이동" 했을 때 이동한 위치가 맵영역을 벗어나면 반복을 멈추고 나간모래의 총량을 return 하면 된다. 여기까지의 기본구조는 아래와 같다 sta..
문제 17779번: 게리맨더링 2 재현시의 시장 구재현은 지난 몇 년간 게리맨더링을 통해서 자신의 당에게 유리하게 선거구를 획정했다. 견제할 권력이 없어진 구재현은 권력을 매우 부당하게 행사했고, 심지어는 시의 이름 www.acmicpc.net 첫번째 풀이 (문제조건을 고려하지 않은 풀이) 문제 접근 전체 로직은 아래와 같다 1. x,y,d1,d2의 모든 경우의 수를 구한다 2. 경우의 수에 대해서 구역5를 그린다 3. 구역5를 그릴 수 없는 경우 다른 경우로 넘어간다 4. 구역 5를 그릴 수 있는 경우 1,2,3,4,5구역의 인구수를 구한다 문제에서 변하는 값은 x,y,d1,d2이고 이 값의 변동 범위는 1~N이다. 따라서 모든 경우를 다 따질 수 있다고 생각했는데, 그 이유는 (x,y)정하기 ..
문제 www.acmicpc.net/problem/9466 9466번: 텀 프로젝트 이번 가을학기에 '문제 해결' 강의를 신청한 학생들은 텀 프로젝트를 수행해야 한다. 프로젝트 팀원 수에는 제한이 없다. 심지어 모든 학생들이 동일한 팀의 팀원인 경우와 같이 한 팀만 있을 www.acmicpc.net 풀이1(시간초과) node를 순회하면서 각 노드에 대해 처음 탐색을시작하는 노드와 탐색이 종료되는 노드가 같으면 팀을 이루고, 다르면 팀이 아니다. 위의 표를 예로 들어보자. node 1에 대해서 탐색을 시작한다. 그러면 차례대로 1->3->3 을 방문하게 되는데, 3의 다음노드는 3이고, 이는 이미 방문했던 노드이므로 1->3 ->3에서 탐색을 종료한다. 이때 탐색시작노드 1과 탐색 마지막 노드 3이 다르므로..
문제 programmers.co.kr/learn/courses/30/lessons/68645 코딩테스트 연습 - 삼각 달팽이 5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9] 6 [1,2,15,3,16,14,4,17,21,13,5,18,19,20,12,6,7,8,9,10,11] programmers.co.kr 풀이 순서대로 map 에다가 숫자를 채워넣으면 "방향이 바뀌면서 숫자가 채워진다"라는 규칙을 발견할 수 있다. 이때 방향은 좌하향 → 오른쪽 → 좌상향 순서대로 변한다. 이때 '언제 방향이 변하나'를 보면 좌하향에서 오른쪽으로 변할 때는 이동하려는 row가 범위를 벗어날때 이다. 오른쪽에서 좌상향으로 방향이 변할 때는 이동하려는 column의 인덱스가 row보다 클때, 즉 co..
문제 www.acmicpc.net/problem/3055 풀이 1초마다 물과 고슴도치가 이동하는 것을 그림으로 나타내면 아래와 같다 물과 고슴도치가 이동할 수 있는 조건이 다르므로 (물은 동굴을 지나갈 수 없고, 고슴도치는 동굴을 지나갈 수 있다) 물이 이동하는 위치를 넣는 큐하나와 고슴도치가 이동하는 큐하나, 총 2개의 큐를 이용해 bfs를 진행하면 된다. 그런데 이때 while(queueWater.isEmpty)를 조건으로 탐색을 하면, 1초에 해당하는 물만 이동하는게 아닌게 된다. 따라서 second라고 하는 변수를 하나 선언해서 second 값에 해당하는 거리를 이동한 물, 고슴도치만 이동하게한다. 코드 import java.io.BufferedReader; import java.io.Buffer..
문제 www.acmicpc.net/problem/9466 9466번: 텀 프로젝트 이번 가을학기에 '문제 해결' 강의를 신청한 학생들은 텀 프로젝트를 수행해야 한다. 프로젝트 팀원 수에는 제한이 없다. 심지어 모든 학생들이 동일한 팀의 팀원인 경우와 같이 한 팀만 있을 www.acmicpc.net 참고한 블로그 bcp0109.tistory.com/entry/%EB%B0%B1%EC%A4%80-9466%EB%B2%88-%ED%85%80-%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8-Java 백준 9466번. 텀 프로젝트 (Java) 문제 링크 : https://www.acmicpc.net/problem/9466 싸이클을 형성하지 못하는 노드 갯수를 찾는 문제입니다. 일반적인 DFS로 모든..