본문 바로가기

Algorithm

[Programming Challenges] 월리를 찾아라 - 난이도(하중) [ 문제 ] 글자들로 이루어진 m * n 그리드와 단어 목록이 주어졌을 때 그리드에서 단어를 찾을 수 있는 위치를 구하라. 그리드에서 한 줄로 연결된 글자들만 단어에 매치될 수 있다. 대소문자는 구분하지 않는다. 또한 단어를 매치시킬 때 수평, 수직, 대각선으로 총 여덟 개의 방향으로 매치시킬 수 있다. [ 입 출력 조건 ] 입력 첫 번째 줄에는 케이스의 개수이다. 각 케이스는 한 쌍의 정수 m과 n이 들어있는 행으로 시작되며 이때 m, n은 1 이상 50이하의 10진수 정수다. 그 다음 m개의 행에는 각각 n개씩의 글자가 들어있으며 이 그리드에서 단어를 찾아야 한다. 그리드에 있는 글자는 대문자일 수도 있고 소문자일 수도 있다. 글자들로 이루어진 그리드 다음 줄에는 k라는 정수가 입력된다(1Colore.. 더보기
Tree - 난이도(하) [ 문제 ] 완전 이진 트리를 만들고 레벨 전위 중위 후위 사선에 대한 출력을 할 수 있는 프로그램을 만드시오. [10 9 17 11 23 8 66 21 2 33 51 7 28] 그리고 만들어진 트리를 이용하여 레벨, 전위, 중위, 후위, 사선 출력하시오 레벨 10 9 17 11 23 8 66 21 2 33 51 7 28 전위 10 9 11 21 2 23 33 51 17 8 7 28 66 중위 21 11 2 9 33 23 51 10 7 8 28 17 66 후위 21 2 11 33 51 23 9 7 28 8 66 17 10 사선1 10 9 11 21 사선2 10 17 66 [ 입 출력 조건 ] 입력 첫 줄에는 Case의 수 n( 1< n 더보기
[Programming Challenges] 3n+1 - 난이도(하) [ 문제 ] - 3n+1 어떤 수열을 만들어내는 다음과 같은 알고리즘을 생각해보자. 어떤 정수 n에서 시작해 n이 짝수면 2로 나누고, 홀수면 3을 곱한 다음 1을 더한다. 이렇게 해서 새로 만들어진 숫자를 n으로 놓고 n=1이 될 때까지 같은 작업을 계속 반복한다. 예를 들어 n=22이면 다음 과 같은 수열이 만들어 진다. 22 11 34 17 52 26 13 40 20 10 5 16 8 4 2 1 아직 증명되지 않았지만 모든 정수 n에 대해 이 알고리즘을 적용시키면 결국에는 n=1에 이르게 되는 것으로 추측된다. 그리고 이 가설은 적어도 1,000,000까지의 정수에 대해서는 참이다. n이라는 값이 입력되었을 때 1이 나올 때까지 만들어진 수의 개수 (1 포함)을 n의 사이클 길이라고 한다. 위에 수.. 더보기
점수를 이용한 이름 정렬 - 난이도(하) 문제 - 점수 정렬 중간고사 후 시험 성적이 나왔다. 그러나 이름과 성적이 두서없이 섞여있다. 이를 점수가 높은 순으로 정렬한다. Input  첫 번째 줄에는 테스트 케이스의 수 ( 0 < n < 50 )가 입력된다. 두 번째 줄에서는 자신이 입력할 인풋 개수 ( 0 < m < 1000 ) 이다. 이후 m 만큼의 이름과 점수가 입력된다. 이름과 점수 사이는 공백으로 구분된다. Output 점수가 높은 사람 순으로 정렬하여 출력한다. 각 케이스는 ‘Testcase#N’로 구분하게 된다. (여기에서 N은 정수) 입력 출력 22 김영수 999박민지 10004이상준 9장대진 1구미진 5심형민 10 Testcase#0박민지김영수 Testcase#1심형민이상준구미진장대진 How to... 이름과 점수를 .. 더보기
행렬의 곱 - 난이도(하) 행렬의 곱 The Problem행렬의 곱 연산은 2*2 일 때, 쉽지만 그 이상이 가면 수학과 라도 손으로 풀려고 한다면 많은 시간이 걸린다. 그래서 사람들에게 외주를 부탁 하였다. 다음은 행렬의 곱에 대한 식이다.Input  첫 번째 줄에는 테스트 케이스의 수 ( 0 < k 50 )가 입력된다. 두 번째 줄에서는 A의 크기 M과 N이 주어진다. ( 2 < M, N < 100)  그 이후 M과 N 만큼 값이 주어진다. 다음 줄은 A와 같이 B가 주어진다. Output 각 케이스는 ‘Testcase#N’로 구분하게 된다. (여기에서 N은 정수) 결과를 출력한다. 입력 출력 22 223 5030 602 1122 2 23 5030 602 22 11 2 Testcase#1123150Testcase#2.. 더보기
고과평가 - 난이도(하) 문제 - 고과평가 난이도 - 하The Problem어떤 회사에서는 상반기 하반기 마다 고과 평가를 한다. 이 평가는 맴버십 활동의 중요한 척도 중 하나이기에 정확하게 계산해야 한다. 하지만 손으로 계산 하면 틀릴 가능성이 있어서 이 프로그램을 구현하기로 하였다. 고과 평가 항목은 다음과 같다. A급(15) B급(10) C급(5) D급(3)으로 나누어 져 있고 자신이 등급을 선택하여 입력을 하고 그 등급의 점수의 합을 한다. 그리고 부장님 면담을 통해 재 평가를 받게 되는데 여기서 평가 항목이 정확하지 않을 때 제외 시킨다. 그리고 평가가 끝난 후 자신의 평가 점수를 알 수 있다. Input  첫 번째 줄은 인풋 케이스의 수 ( 0 < n < 50 ) 이다. 두 번째 줄에서는 자신이 입력할 인풋 개수 .. 더보기
[Programming Challenges]동맹 휴업(Hartals) 문제 - 동맹휴업(Hartal) 인기도: B성공율: 높음레벨: 2난이도_하 각 정당을 동맹 휴업지수라는 h라는 양의 정수로 나타낼 수 있다. 이 동맹 휴업지수는 한 동맹 휴업과 다음 동맹 휴업 사이의 기간을 날짜 수로 표시한 값이다.세 개의 정당이 있다고 생각해보자. 그리고 I번째 당의 동맹 휴업 지수를 hi라고 할 때 h1=3, h2=4, h3=8이라고 가정하자. N일(N=14)일 동안의 세 당의 행보를 시뮬레이션하면 다음과 같이 표시할 수 있다. 시뮬레이션은 항상 일요일에 시작하며 금요일이나 토요일에는 동맹 휴업이 없다. 요일1일2월3화4수5목6금7토8일9월10화11수12목13금14토1번정당 X X X X 2번정당 X X X 3번정당 X 동맹휴업 12 34 5 이 결과를 보면 14일 동안 정확하게 다.. 더보기
[해결] Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted. C/C++ 카테고리에 들어가야 맞겠지만, 일단 알고리즘 풀다가 생긴 오류니까 여기 포스팅했습니다. ;ㅁ; Run-Time Check Failure #2 - Stack around the variable 'a' was corrupted. 몇 줄 짜지도 않았는데 위와 같은 Run-time 에러가 났습니다. 위와 같은 에러는 근본적으로 설정한 배열 크기, type 크기보다 큰 값이 들어갈 때 발생합니다. 실수하지 않게 조심해야겠습니다. :( 더보기
[Dovelet] 친구수/amicable 1. 문제 프로그램 명: amicable제한시간: 1 초어떤수 A 의 약수(단, 자신은 제외)의 합을 B 라 할 때A 와 B 가 같으면 완전수B 의 약수(자신은 제외)의 합이 다시 A 가 되는 경우를 친구수라 함.친구수가 되는 최초의 수는 220 이다.220 의 약수는 1,2,4,5,10,11,20,22,44,55,110,220 이 중 자신을 제외한 약수의 합은1+2+4+...+110 = 284284 의 약수는 1,2,4,71,142,284 자신을 제외한 약수의 합은1+2+4+71+142 = 220그러므로 220 과 284 는 친구수 이다. 입력 자연수 n ( n 더보기
[C]약수 구하기 1. 약수 구하기 n이 입력값, i는 n과 같거나 작은 정수들 입니다.n에 1~n까지 나누었을때(n÷i) 나머지가 0이면 i는 n의 약수입니다. 12345678910111213141516#include int main(void){ int i,n; scanf("%d", &n); // 입력 값 /* n/i(입력값/입력값보다 작은 수)의 나머지가 0이면 i는 n의 약수다. */ for(i=1; i 더보기