본문 바로가기

알고리즘/백준

백준1388-바닥장식(브론즈1) 문제출처 : https://www.acmicpc.net/problem/1388 1388번: 바닥 장식 형택이는 건축가이다. 지금 막 형택이는 형택이의 남자 친구 기훈이의 집을 막 완성시켰다. 형택이는 기훈이 방의 바닥 장식을 디자인했고, 이제 몇 개의 나무 판자가 필요한지 궁금해졌다. 나�� www.acmicpc.net 문제풀이) 한개의 나무를 증가 후 '-' 을 만나면 오른쪽으로 '-' 를 만날때까지 색칠 하면서 계속 이동 '|' 을 만나면 아래로 색칠하면서 이동. 색칠 된 곳은 건너뛰면 됨 #include using namespace std; char floor[110][110]; int visit[110][110]; int n,m; void f(int y,int x,int dir) { if(y>=n.. 더보기
백준1384-메시지(브론즈1) 문제출처 : https://www.acmicpc.net/problem/1384 1384번: 메시지 문제 Misfits 아카데미는 문제아들을 위한 치유 시간을 도입했습니다. 그 중 한 가지 활동은 아이들이 타인에 대해 예의를 갖출 수 있도록 고안되었으며, 내용은 아래와 같습니다. 아이들은 원형�� www.acmicpc.net 문제풀이) 문제를 이해 하면 원형구조의 자료구조를 생각해 주면 된다. 데이터를 분석해 보면 자신을 기준으로 앞쪽으로 보면 된다. Ann P N P P 인 경우를 살펴 보면 처음 P는 Eunice 인것을 알 수 있고 그 다음 N이 Debby 인것을 알 수 있다. 따라서 Debby 에서 Ann 을 출력 해 주면 된다. #include using namespace std; struct da.. 더보기
백준1359-복권(브론즈1) 문제출처 : https://www.acmicpc.net/problem/1359 1359번: 복권 첫째 줄에 N M K가 주어진다. N은 2보다 크거나 같고, 8보다 작거나 같은 자연수이고, M은 1보다 크거나 N-1보다 작거나 같은 자연수이다. K는 1보다 크거나 같고 M보다 작거나 같은 자연수이다. www.acmicpc.net 문제풀이) 조합을 이용하는 문제이다. 먼저 n개 중에서 m개를 선택하는 모든 경우의 갯수를 구한다. m개중에 k개 이상의 수가 포함되면 당첨 따라서 m개 중에서 k개를 포함하는 경우 m개중에서 k+1개를 포함하는 경우 ... m개중에서 m 개를 포함하는 경우 의 수를 모두 더해 주면 된다. k개를 포함하는 경우의 수를 구하는 확률을 구해 보면 다음과 같다. combination(.. 더보기
백준1357번-뒤집힌덧셈(브론즈1) 문제출처 - https://www.acmicpc.net/problem/1357 1357번: 뒤집힌 덧셈 어떤 수 X가 주어졌을 때, X의 모든 자리수가 역순이 된 수를 얻을 수 있다. Rev(X)를 X의 모든 자리수를 역순으로 만드는 함수라고 하자. 예를 들어, X=123일 때, Rev(X) = 321이다. 그리고, X=100일 때, Rev( www.acmicpc.net 문제풀이) 어떤 숫자를 뒤집는 것은 마지막 자리를 잘라 내서 진수를 곱해 주면서 뒤에 붙여주면 된다. #include using namespace std; int rev(int n) { int sum = 0; while(n) { sum = sum*10 + n%10; n/=10; } return sum; } int main() { int .. 더보기
백준1236-유진수(브론즈1) 문제출처 : https://www.acmicpc.net/problem/1356 1356번: 유진수 첫째 줄에 수 N이 주어진다. 이 수는 2,147,483,647보다작거나 같은 자연수이다. www.acmicpc.net 문제풀이> 해당 숫자를 앞과 뒷부분으로 분리 하는 방법을 아는지 묻는 문제 #include #include #include using namespace std; int getnumlen(long long n) { int res=0; while(n) { res++; n/=10; } return res; } long long frontMulti(long long n,int pos) { n = n /(int)pow(10,pos); long long res =1; while(n) { res *=n.. 더보기
백준1268 - 임시반장정하기(브론즈1) 문제출처 : https://www.acmicpc.net/problem/1268 1268번: 임시 반장 정하기 오민식 선생님은 올해 형택초등학교 6학년 1반 담임을 맡게 되었다. 오민식 선생님은 우선 임시로 반장을 정하고 학생들이 서로 친숙해진 후에 정식으로 선거를 통해 반장을 선출하려고 한다. �� www.acmicpc.net 문제풀이> 풀이시 주의 할점은 2학년때 3번과 4번이 같은 반이었고 3학년때 3번과 4번이 같은 반이었을때 같은반이었던 친구를 한명으로 세어 주어야 한다. 따라서 2차원배열 1번부터 1000번까지 에서 같은 반이었던 친구의 번호를 셋팅 한 후 그 수가 가장 큰 수를 찾아 주면 된다. 단, 모두 반이 다 달랐을때 1번을 출력해야 된다. #include using namespace s.. 더보기
백준1259 - 팰린드롬수(브론즈1) 출처 : https://www.acmicpc.net/problem/1259 1259번: 팰린드롬수 문제 어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다. 'radar', 'sees'는 팰린드롬이다. 수도 팰린드롬으로 취급할 수 있다. 수의 숫자들을 뒤에서부터 읽어도 같다면 그 �� www.acmicpc.net 문제풀이> 숫자를 분해해서 배열에 넣은 후 앞과 뒤를 비교하면서 동일한지 체크하면 됨 #include using namespace std; bool ispalindrome(int a) { int num[10]; int cnt=0; while(a) { num[cnt++]=a%10; a/=10; } for(int i=0;i> n; if(n==0) break; if(ispalindr.. 더보기
백준 1252번 - 이진수덧셈(브론즈1) 출처 : https://www.acmicpc.net/problem/1252 1252번: 이진수 덧셈 첫째 줄에 두 개의 이진수가 빈 칸을 사이에 두고 주어진다. 각 이진수는 1 또는 0으로만 이루어져 있으며, 0으로 시작할 수도 있다. 또한 각 이진수의 길이는 80을 넘지 않는다. www.acmicpc.net 문제풀이> 80자리까지 나오기 때문에 이진수를 십진수로 변환하여 계산후 이진수로 변환하는 방법은 실패 문자열끼리의 합을 구해 주는데 앞의 '0'이 나온것을 제거 후 두개의 문자열의 개수를 동일하게 맞춘 후에 뒷자리 부터 계산하면서 올림수를 처리해 줄때까지 출력 하는 형식으로 처리함 #include #include using namespace std; char binary1[100]; char bin.. 더보기