본문 바로가기

Algorithm

(17)
[백준 1439] 뒤집기 백준 1439번 : 뒤집기 www.acmicpc.net/problem/1439 1450번: 냅색문제 첫째 줄에 N과 C가 주어진다. N은 30보다 작거나 같은 자연수, C는 109보다 작거나 같은 음이 아닌 정수이다. 둘째 줄에 물건의 무게가 주어진다. 무게도 109보다 작거나 같은 자연수이다. www.acmicpc.net /* 문제 설명 */ 0과 1로 이루어진 문자열이 있을 때, 0 → 1, 1 → 0으로 뒤집을 수 있다. 이 때, 문자열의 모든 숫자가 같도록 만드려면 최소 몇 번을 뒤집어야할까? S = 0001100 0000000 : 1을 뒤집는 경우 1번만에 같은 숫자로 만들 수 있다. 1111111 : 0을 뒤집는 경우 2번만에 같은 숫자로 만들 수 있다. 따라서 최소로 뒤집는 경우는 1이다. ..
[백준 15489] 파스칼 삼각형 백준 15489번 : 파스칼 삼각형 https://www.acmicpc.net/problem/15489 15489번: 파스칼 삼각형 첫째 줄에 양의 정수 R, C, W가 공백을 한 칸씩 두고 차례로 주어진다. (단, 2 ≤ R+W ≤ 30, 2 ≤ C+W ≤ 30, 1 ≤ W ≤ 29, C ≤ R) www.acmicpc.net /* 문제 설명 */ 파스칼 삼각형은 양 끝을 제외한 각 수는 자신의 바로 왼쪽 위의 수와 바로 오른쪽 위의 수의 합으로 되어있다. 이때 R번째 줄, C번째 수를 위 꼭짓점으로 하는 한 변이 포함하는 수의 개수가 W인 정삼각형과 그 내부를 생각하자. 정삼각형의 변과 그 내부에 있는 수들의 합을 구하여라. /* 해결 방안 */ 현재 5번째 줄 3번째 칸에 있다면, 이는 4번째 줄 2..
[SWEA 1257] K번째 문자열 SWEA 1257번 : K번째 문자열 swexpertacademy.com/main/code/problem/problemDetail.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com /* 문제 설명 */ 한 문자열이 가진 모든 부분 문자열을 사전 순으로 정렬한다. 이 때, K 번째 문자열을 구하시오. ex) 문자열 love의 모든 부분 문자열 : l, o, v, e, lo,ov, ve, lov, ove, love 사전 순으로 정렬할 경우 : e, l, lo, lov, love, e, ov, ove, v, ve /* 해결 방안 */ 중복되는 경우는 무시해줘야하므로 set을 사용한다. set에 insert를 하게..
[SWEA 2383] 점심 식사시간 SWEA 2383번 : 점심 식사시간 swexpertacademy.com/main/code/problem/problemDetail.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com /* 문제 설명 */ N*N 배열에 사람(P)들과 2개의 계단 입구(S)가 있다. 각 사람이 계단 입구까지 도착하려면 이동시간이 | PR - SR | + | PC - SC | 만큼 걸린다. (PR, PC : 사람 P의 세로위치, 가로위치, SR, SC : 계단 입구 S의 세로위치, 가로위치) 계단 입구에 도착한 사람은 1분 후 계단을 내려가는데, 한 층을 내려가려면 1분씩 걸린다. 따라서 계단의 길이가 K면 완전히 내려가는데에는 ..
[SWEA 10912] 외로운 문자 SWEA 10912번 : 외로운 문자 swexpertacademy.com/main/main.do SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com /* 문제 설명 */ 주어진 문자열에서 같은 두 문자를 지워나갔을 때 남는 문자열을 출력하시오.만약 문자열에 있는 모든 문자들을 지울 수 있는 경우에는 Good을 출력하라. /* 해결 방안 */ 여기서 중요한 것은 같은 문자 서로 붙어있을 때 지우는 것이 아니라, 그냥 문자열 내에 있는 문자들 중 같은 거 두 개를 지우면 됩니다.이는 주어진 테스트 케이스 중 마지막 항목을 보시면 알 수 있습니다. 따라서, 계수 정렬을 이용하여 a-z까지 문자가 나온 횟수를 세어주었고각..
[백준 1756] 피자 굽기 백준 1756번 : 피자 굽기 www.acmicpc.net/problem/1756 1756번: 피자 굽기 첫째 줄에 오븐의 깊이 D와 피자 반죽의 개수 N이 공백을 사이에 두고 주어진다. (1 2 첫 번째 피자인 지름 3짜리를 오븐에 넣으면,6번째 관이 2이므로 5번째 관에 들어가게 된다. 위와 같이 배열의 처음부터 시작해서 끝까지 가는 도중에, 현재 피자보다 지름이 작은 관을 만나게 되면 그 곳에 안착하게 된다. 따라서 5 6 4 3 6 2 3 에서 마지막 관이 3이라 한들, 자신의 위에 있는 지름 2짜리의 관에 막혀버리게 되는 것이다. 즉, 배열이 5 6 4 3 6 2 3 이렇게 있지만, 배열의 각 요소들은 자신보다 위(왼쪽)에 있는 관의 지름에 영향을 받으므로, 5 5 4 3 3 2 2 와 같이 동..
[백준 18238] ZOAC 2 백준 18238번 : ZOAC 2 www.acmicpc.net/problem/9440 9440번: 숫자 더하기 강민이가 초등학교 3학년일 때, 담임선생님이 이런 문제를 냈었다. 숫자 1, 2, 7, 8, 9 를 사용해서 만든 두 숫자를 더했을 때, 나올 수 있는 가장 작은 수는 무엇일까요? 강민이는 이 문제의 답이 2 www.acmicpc.net /* 문제 설명 */ 위의 그림과 같이, 원판에 문자들이 A-Z 순서대로 적혀있다. 원판을 왼쪽 또는 오른쪽으로 한 칸 돌리는 데에 1의 시간이 소요된다. 처음에는 화살표가 'A'를 가리키고 있을 때, 주어진 문자열을 원판을 적절하게 움직여 최대한 빠르게 출력하시오. /* 해결 방안 */ 원판을 오른쪽이나 왼쪽으로 돌릴 수 있기 때문에, A에서 B로 갈 수도 있..
[백준 9440] 숫자 더하기 백준 9440번 : 숫자 더하기 www.acmicpc.net/problem/9440 9440번: 숫자 더하기 강민이가 초등학교 3학년일 때, 담임선생님이 이런 문제를 냈었다. 숫자 1, 2, 7, 8, 9 를 사용해서 만든 두 숫자를 더했을 때, 나올 수 있는 가장 작은 수는 무엇일까요? 강민이는 이 문제의 답이 2 www.acmicpc.net /* 문제 설명 */ N(2 ≤ N ≤ 14)개의 0~9 사이의 숫자가 주어질 때, 숫자들을 조합하여 우선 두 개의 숫자를 만든다. 만든 두 숫자를 더했을 때, 나올 수 있는 가장 작은 수를 구하시오. /* 해결 방안 */ 두 숫자를 더했을 때, 최소가 되려면 어떻게 해야할까? 숫자의 앞에서 부터 뒤를 봤을 때, 큰 숫자를 어디로 배치해야할지 떠올려보자. 큰 숫자..
[백준 14939] 불 끄기 백준 14939번 : 불 끄기 www.acmicpc.net/problem/2170 2170번: 선 긋기 첫째 줄에 선을 그은 횟수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 다음 N개의 줄에는 선을 그을 때 선택한 두 점의 위치 x, y(-1,000,000,000 ≤ x < y ≤ 1,000,000,000)가 주어진다. www.acmicpc.net /* 문제 설명 */ 전구 켜져 있다 == 1, 꺼져 있다 == 0 10×10 배열이 있을 때, 한 칸을 누르면 그 위치에서 위, 아래, 왼쪽, 오른쪽에 있는 배열의 상태가 바뀌게 된다. 모든 배열을 0으로 만들기 위해서는 최소 몇 번 눌러야 하는가? /* 해결 방안 */ 가로가 10칸이고, 세로가 10칸 이므로, 총 100칸에 대해서 클릭할지 말지를 ..
[백준 17609] 회문 백준 17609번 : 회문 www.acmicpc.net/problem/17609 17609번: 회문 각 문자열이 회문인지, 유사 회문인지, 둘 모두 해당되지 않는지를 판단하여 회문이면 0, 유사 회문이면 1, 둘 모두 아니면 2를 순서대로 한 줄에 하나씩 출력한다. www.acmicpc.net /* 문제 설명 */ 문자열이 입력으로 주어질 때, 이를 분석하여 0. 회문 : 앞 뒤 방향으로 볼 때 같은 순서의 문자로 구성된 문자열 1. 유사 회문 : 회문이 아니지만 한 문자를 삭제하여 회문으로 만들 수 있는 문자열 2. 회문도, 유사 회문도 아닌 것 셋 중 무엇인지 출력하라. /* 해결 방안 */ 현재 보고 있는 글자를 삭제하는 경우와 유지하는 경우에 대해 따져봐야한다. → 이를 쉽게하기 위해 함수를 이용..