분류 전체보기

알고리즘/그래프

[BOJ] 백준 2573 - 빙산 풀이

1. 문제 https://www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net 2. 풀이 백준 골드4에 해당하는 DFS 문제이다. 우선 입력으로 주어지는 배열의 row와 column을 통해 정수형 2차원 배열을 구성하고 다음 줄부터 주어지는 배열의 값을 2차원 배열에 값을 저장한다. 그 후 while 무한 반복을 돌면서 다음과 같은 로직을 순서대로 수행한다. 1. 1년 추가 2. 얼음 구역의 개수 체크 ( 이는 처음으로 주어지는 배열의 값이 이미 다 녹아있거..

알고리즘/구현

[BOJ] 백준 1244 - 스위치 켜고 끄기 풀이

1. 문제 https://www.acmicpc.net/problem/1244 1244번: 스위치 켜고 끄기 첫째 줄에는 스위치 개수가 주어진다. 스위치 개수는 100 이하인 양의 정수이다. 둘째 줄에는 각 스위치의 상태가 주어진다. 켜져 있으면 1, 꺼져있으면 0이라고 표시하고 사이에 빈칸이 하나씩 www.acmicpc.net 2. 풀이 백준 실버 4에 해당하는 구현 및 시물레이션 문제이고 문제를 풀면서 이 문제에서의 핵심 구현 부분은 "여학생"부분이라고 생각했다. 남학생의 경우 본인이 받은 스위치의 번호의 배수에 맞게 0이면 1로, 1이면 0으로 스위치를 변경해주면 된다. 여학생의 경우 3가지의 경우를 생각했다. 1. 받은 스위치의 번호가 1 혹은 스위치의 개수일 경우 - 이 경우는 왼쪽 혹은 오른쪽 ..

알고리즘/분리집합

[BOJ] 백준 2961 - 도영이가 만든 맛있는 음식 풀이

1. 문제 https://www.acmicpc.net/problem/2961 2961번: 도영이가 만든 맛있는 음식 첫째 줄에 재료의 개수 N(1 ≤ N ≤ 10)이 주어진다. 다음 N개 줄에는 그 재료의 신맛과 쓴맛이 공백으로 구분되어 주어진다. 모든 재료를 사용해서 요리를 만들었을 때, 그 요리의 신맛과 쓴맛은 www.acmicpc.net 2. 풀이 백준 실버 2의 브루트포스 및 백트래킹 문제이다. 백트래킹을 어떻게 설정해야하는지 몰랐던 문제였고, 백트래킹에 대한 이해가 너무 부족하다고 느낀 문제였다. 우선 이 문제는 모든 경우의 수를 전부 탐색해야 하기 때문에 단순한 반복문으로는 해결이 안되는 문제이다. 입력을 받고 다음의 변수를 설정한다. 1. input_cnt = 요리에 들어간 재료의 개수 2...

알고리즘/문자열

[BOJ] 백준 13417 - 카드 문자열 풀이

1. 문제 https://www.acmicpc.net/problem/13417 13417번: 카드 문자열 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각각의 테스트 케이스의 첫째 줄에 처 www.acmicpc.net 2. 풀이 실버 3의 문자열 구현 문제이다. 이 문제의 핵심은 문제에도 설명이 나와 있는 "만들 수 있는 카드 문자열 중 사전 순으로 가장 빠른 문자열을 출력하는 프로그램을 작성"이라는 문구이다. 먼저 입력으로 주어지는 테스트 케이스만큼 반복문을 구성하고 String 배열로 입력을 받는다. (12줄) 문제에서 첫 번째 카드는 기본으로 맨 왼쪽의 카드를 놓는다고 했으므로 미리 선언했던 버..

알고리즘/구현

[BOJ] 백준 1817 - 짐 챙기는 숌 풀이

1. 문제 https://www.acmicpc.net/problem/1817 1817번: 짐 챙기는 숌 첫째 줄에 책의 개수 N과 박스에 넣을 수 있는 최대 무게 M이 주어진다. N은 0보다 크거나 같고 50보다 작거나 같은 정수이고, M은 1,000보다 작거나 같은 자연수이다. N이 0보다 큰 경우 둘째 줄에 책 www.acmicpc.net 2. 풀이 백준 실버 5의 난이도인 문제이며, 배낭 문제와 유사하지만 배낭 문제보다 쉽게 접근할 수 있다. 입력으로 주어지는 N이 0이 아니라면 로직을 수행하고 0이라면 0을 출력한다. (17 ~ 18줄) 책의 무게를 리스트로 받은 후 하나씩 배낭에 넣어보면서 조건문을 수행하면 된다. 1. 탐색한 책의 무게가 M보다 클 경우 - 이 경우 하나의 박스에 담을 수 없으..

알고리즘/문자열

[BOJ] 백준 4889 - 안정적인 문자열 풀이

1. 문제 https://www.acmicpc.net/problem/4889 4889번: 안정적인 문자열 입력은 여러 개의 데이터 세트로 이루어져 있다. 각 데이터 세트는 한 줄로 이루어져 있다. 줄에는 여는 괄호와 닫는 괄호만으로 이루어진 문자열이 주어진다. 문자열의 길이가 2000을 넘는 경우 www.acmicpc.net 2. 풀이 백준 실버 1 문자열에 해당하는 문제이다. 백준 문제에서 괄호를 몇 번 풀어봐서 그런지 보자마자 스택을 이용하여 풀어야 한다는 것을 알았다. (물론 금방 풀지는 못했지만...) 문제의 핵심은 입력으로 주어지는 문자열을 안정적인 문자열로 바꾸기 위한 최소한의 연산 횟수이다. 우선 Character로 스택을 만들어준다.(9번 줄) 입력의 횟수가 주어지지 않고 '-'가 마지막 ..

알고리즘/구현

[BOJ] 백준 1449 - 수리공 항승

1. 문제 https://www.acmicpc.net/problem/1449 1449번: 수리공 항승 첫째 줄에 물이 새는 곳의 개수 N과 테이프의 길이 L이 주어진다. 둘째 줄에는 물이 새는 곳의 위치가 주어진다. N과 L은 1,000보다 작거나 같은 자연수이고, 물이 새는 곳의 위치는 1,000보다 작거나 www.acmicpc.net 2. 풀이 백준 실버 3 그리디 알고리즘 파트의 문제이다. 입력으로 주어지는 물이 새는 곳을 배열 OR 리스트에 넣고 정렬을 한다. (정렬하면 처음 위치점을 쉽게 찾을 수 있다.) 그 후 처음 물이 새는 곳을 찾고 그 곳에서 0.5를 뺀 값을 저장한다. 0.5를 빼는 이유는 좌우 0.5만큼 간격을 줘야 하기 때문이다. 한 곳을 테이프로 막았다면 그 곳에서 0.5를 뺀 곳..

알고리즘/문자열

[BOJ] 백준 17609 - 회문 풀이

1. 문제 https://www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net 2. 풀이 백준 문자열 파트 골드 5의 문제이다. 처음 문제를 보고 문제가 쉽게 느껴져서 입력으로 주어진 문자열을 StringBuffer에 넣고 reverse() 함수를 통해 돌린 후 회문이면 "0"을 회문이 아니라면 문자를 하나씩 제거하면서 회문인지 체크하는 방식으로 풀었다. 그 결과 당연히 시간 초과가 났다... (최악의 경우 100,000자리가 나온다면 반복문을 10만번 돌아야 한다...) 그 후 Two Poi..

송승현(SSH)
'분류 전체보기' 카테고리의 글 목록 (7 Page)