본문 바로가기

<알고리즘 문제풀이&연습>/[C++] 백준68

[백준 4673] 셀프 넘버 안녕하세요. BlockDMask 입니다.추석날 2번째 문제 입니다. 왔다 갔다 차안에서 문제를 풀고 있습니다. 길이 많이 막히네요;;170818 문제 빼먹음 -> 171004 완료0. 제목백준 4673 셀프 넘버BOJ 4673 self number1. 문제 설명 셀프 넘버는 1949년 인도 수학자 D.R. Kaprekar가 이름 붙였다.양의 정수 n에 대해서 d(n)을 n과 n의 각 자리수를 더하는 함수라고 정의한다.예를 들어 d(42) = 42 + 4+ 2 = 48 이다. 양의 정수 n 이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ... 과 같은 무한 수열을 만들 수 있다. 예를들어, 33으로 시작한다면 다음수는 33 + 3 + 3 = 39 이고, 그 다음 .. 2017. 10. 4.
[백준 2941] 크로아티아 알파벳 안녕하세요. BlockDMask 입니다.다들 즐추 하고 계시죠? 중간에 시간이 좀 떠서 문제를 풀어 보았습니다.170814 문제 빼먹음 -> 171004 완료0. 제목백준 2941 크로아티아 알파벳BOJ 2941 크로아티아 알파벳1. 문제 설명 이전 운영체제에서는 크로아티아 알파벳을 입력할 수 없었다고 한다. 아래 그림과 같이 크로아티아 알파벳을 변경해서 입력했습니다. 크로아티아 알파벳 변경 č c= ć c- dž dz= ñ d- lj lj nj nj š s= ž z= 이런식으로 바꾸어 사용합니다. 예를 들어, ljes=njak 는 크로아티아 알파벳 6개로(lj, e, š, nj, a, k)로 이루어져있다. ddz=z= 는 크로아티아 알파벳 3개로(d, dz=, z=)로 이루어져있다. 단어가 주어졌을때,.. 2017. 10. 4.
[백준 5622] 다이얼 안녕하세요 . BlockDMask 입니다.170810 일자 문제 입니다. (170810 문제 빼먹음 -> 171003 완료) 0. 제목백준 5622 다이얼BOJ 5622 다이얼1. 문제 설명 전화를 걸고 싶은 번호가 있으면, 숫자를 하나 누르고 돌린다. 숫자 하나를 누른 상태에서 금 속 핀이 있는 곳 까지 시계 방향으로 돌려야 한다. 다른 숫자들을 누르려면 원래 위치로 돌아가기를 기다려야 한다. 숫자 1을 걸려면 총 2초가 필요하다. 1보다 큰 수를 거는데 걸리는 시간은 이보다 더 걸리며, 한 칸 옆에 있는 숫자를 걸기 위해서는 1초씩 더 걸린다. 입력은 문자열로 들어온다. 즉, 어떤 전화를 걸때, 각 알파벳에 해당하는 숫자를 걸면 된다. 예를 들어, UNUCIC는 868242와 같다. 단어가 주어졌을 .. 2017. 10. 3.
[백준 13458] 시험 감독 안녕하세요.// 오늘도 어김없이 문제를 풀고온 BlockDMask 입니다.곧 추석이네요 ㅎㅎ 추석때도 전을 먹으며 일일 일문제 하도록 노력해보겠습니다.0. 제목백준 13458 시험 감독BOJ 13458 시험 감독1. 문제 설명 총 N개의 시험장이 있고, 각각의 시험장 마다 응시자 들이 있습니다. i 번 시험장에 있는 응시자의 수는 Ai 명 입니다. 시험 감독관은 총감독관과 부감독관으로 두 종류가 있습니다. 총 감독관은 한 교실에서 감시 할 수 있는 응시자의 수가 B 명이고, 부감독관은 한 교실에서 감시할 수 있는 응시자의 수가 C 명 입니다. 각각의 시험장에 총감독관은 오직 1명만 있어야 한다. 부감독관은 여러명 있어도 상관없다. 각 시험장 마다 응시생들을 모두 감시해야 합니다. 이때 필요한 감독관 수의.. 2017. 9. 26.
[백준 2292] 벌집 안녕하세요. BlockDMask 입니다.9월 25일자 문제 입니다.0.제목백준 2292 벌집BOJ 2292 벌집1. 문제 설명 [사진 출처]https://www.acmicpc.net/problem/2292 ACM-ICPC > Regionals > Asia > Korea > Nationwide Internet Competition > Asia Regional - Daejeon Nationalwide Internet Competition 2004 B번 위 그림과 같이 육각형으로 벌집이 이루어져 있습니다. 중앙 1번 방에서 부터 옆방 옆방으로 1씩 증가하면서 번호로 주소가 써져있습니다. (1 36번방이 N으로 들어오면 출력은 4 입니다. 2. 풀이 과정 방의 갯수를 잘보면 1개 - [1]6개 - [2~7]12.. 2017. 9. 26.
[백준 1427] 소트인사이드 안녕하세요. BlockDMask 입니다.오늘 문제는 .. 음 쉬운 문제입니다.[C++ reference] 를 설명하기 위해서 찾아서 풀어본 문제입니다.0. 제목백준 1427 소트인사이드BOJ 1427 소트인사이드1. 문제 설명숫자 N 이 들어오면 내림차순으로 출력하라.N의 범위는 1,000,000,000 보다 작거나 같다.2. 풀이과정 a) 알고리즘 sort를 이용STL에서 지원해주는 sort 함수를 이용하여 푼 경우. b) 직접 bubble sort 구현 3. 코드 a) algorithm 헤더파일에서 지원해주는 sort 함수 이용.12345678910111213141516171819//백준 1427 번 소트인사이드 #include#include#includeusing namespace std; char.. 2017. 9. 23.
[백준 1316] 그룹 단어 체커 안녕하세요. BlockDMask 입니다.9월 21일 목요일 문제 풀어보겠습니다. 0. 제목백준 1316 그룹 단어 체커BOJ 1316 그룹 단어 체커Group Word Checker1. 문제 설명 그룹 단어란 단어(문자열)에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우를 말합니다. "jjjkkqq" 는 j, k, q가 모두 연속해서 나타나므로 그룹 단어 입니다. "bear" 는 b, e, a, r 이 모두 연속해서 나타나므로 그룹 단어 입니다. "blockdmask" 는 b, l, o ,c k, d , m, a, s, k 에서 k 가 연속해서 나타나지 않으므로 그룹단어가 아닙니다. "kkkjjjjmmmj" 는 j 가 연속해서 나타나지 않으므로 그룹단어가 아닙니다. Testcase 가 .. 2017. 9. 21.
[백준 9012] 괄호 (stack) 안녕하세요. BlockDMask 입니다.백준 알고리즘 사이트에서 단계별로 풀어보기를 하나하나 하고있습니다. ㅎㅎ0. 제목백준 9012 괄호BOJ 9012 괄호1. 문제설명 괄호 문자열 (Parenthesis String, PS)는 '(', ')' 만으로 구성되어 있는 문자열을 말합니다.흔히 우리가 말하는 소괄호.! 그 중 괄호의 모양이 바르게 구성된 올바른 괄호 문자열을 Valid PS, VPS라고 부릅니다. "()" 는 VPS 입니다."()()(())" 는 VPS 입니다."())" 는 VPS 가 아닙니다. 처음 Test할 문자열의 갯수 N이 들어오고 그다음 문자열이 N개 만큼 들어옵니다. 입력된 괄호 문자열이 올바른 괄호 문자열(VPS)이면 "YES"를 아니면 "NO"를 한줄에 하나씩 출력하시오. 2... 2017. 9. 20.
[백준 1016] 제곱ㄴㄴ수 안녕하세요. BlockDMask 입니다.오늘자 문제 "제곱 ㄴㄴㄴㄴㄴㄴㄴㄴ 수 " 풀어보겠습니다. 이 문제 생각하는데 너무 오래걸렸어..0. 제목백준 1016 제곱ㄴㄴ수BOJ 1016 제곱ㄴㄴ수1. 문제설명 어떤 수가 1보다 큰 제곱수로 나누어 떨어지지 않을 때, 제곱 ㄴㄴ 수라고 합니다. 제곱수는 정수의 제곱. min과 max의 범위가 주어지면 min, max를 포함한 사이에 제곱 ㄴㄴ 수가 몇 개 있는지 출력하는 문제. min의 조건은.1 min >> max; long long sq_max = (long long)sqrt(max); //범위 내 제곱값이 될 수 있는 가장 큰수 long long cntNum =0; //제곱들의 개수 for(long long i=2; i 2017. 9. 19.
[백준 11005] 진법 변환 2 안녕하세요. BlockDMask 입니다.오늘은 11005번 진법 변환2 을 풀어보았습니다.블로그 글을 늦게 올려서... 어제(9/18)일자 문제입니다.0. 제목백준 11005 진법 변환 2BOJ 11005 진법 변환 21. 문제설명 10진수 수 n 이 주어지고 ( n > b; vector v; while(1){ v.push_back(n%b); //해당 진수로 나눈 나머지를 vector에 넣음 n /= b; if(n==0) break; } vector::reverse_iterator iter; for(iter = v.rbegin(); iter != v.rend(); iter++){ if(*iter>=10){ char c = *iter-10+'A'; //10 이상의 알파벳은 char 타입으로 출력 cout 2017. 9. 19.