분류 전체보기 2432

동물의 숲 2/14 업데이트 내용

2018년 2월 14일 오전에 업데이트된 내용을 전해드리겠습니다.당신의 캠핑장에 새로운 요소들을 추가했습니다!하나하나 살펴보죠... 이제 캠핑장에 방문한 동물들의 옷을 갈아입힐 수 있습니다!옷을 갈아입히고 싶다면, 캠핑장에 있는 동물 친구에게 말을 거세요.*동물 친구가 어느정도의 레벨에 도달해야 옷을 갈아입힐 수 있습니다.*특정 옷은 입힐 수 없을 수도 있습니다. 기존에는 하나의 카페트를 깔 수 있었지만 지금은 두개의 카페트를 깔 수 있습니다. OK Motors에서 Brake Tapper라는 게임을 진행할 수 있습니다!코인 슬롯 게임처럼 동일한 문양을 세개 이어서 맞춘다면, 보상을 얻고 그 보상으로 선물과 교환할 수 있습니다. 근처에 동물의 숲 포켓캠프를 하는 친구가 있다면 친구추가할 수 있는 새로운 방..

카테고리 없음 2018.02.14

codewars: Some Egyptian fractions

문제 링크입니다: https://www.codewars.com/kata/54f8693ea58bce689100065f/train/cpp이집트 분수는 일반 분수를 분자가 1인 분수들의 합으로 표현합니다.예를 들어 4/5=1/2+1/4+1/20으로 표현됩니다.상당히 흥미로운 주제인데도 불구하고 처음 접했기 때문에 개념이 상당히 어렵게 느껴졌는데 다행히 이에 대해 잘 설명된 포스팅이 있었기 때문에 프로그램을 쉽게 작성할 수 있었습니다.https://en.wikipedia.org/wiki/Egyptian_fraction denominator) //분자가 분모보다 큰 경우(대분수로 만듬) { result += to_string(numerator / denominator); numerator %= denominato..

codewars: Valid Braces

문제 링크입니다: http://www.codewars.com/kata/5277c8a221e209d3f6000b56/train/cpp왼쪽 괄호들을 스택에 넣고 오른쪽과 스택의 탑을 비교하는 것이 핵심이였습니다. /* 괄호, 중괄호, 대괄호를 문자열로 받고 맞는 순서로 입력받았는지 판별하시오 */ #include #include #include using namespace std; bool ifLeft(char ch) //왼쪽 괄호 여부 { if (ch == '(' || ch == '{' || ch == '[') return true; return false; } bool match(char left, char right) //왼쪽 괄호와 오른쪽 괄호 동일한지 비교 { if (left == '('&&righ..

c++ 회의실 배정 알고리즘(DP 사용)

http://jaimemin.tistory.com/391?category=988050과 비슷한 문제입니다.두가지 다른 점은 다음과 같습니다.1. 백준 1931번 문제와 달리 한 회의의 소요시간은 1 이상이고2. 한 회의의 끝과 그 다음 회의의 시작은 동일할 수 없다는 점입니다.(이런 경우 겹친다고 여긴다.) 물론 탐욕법(greedy method)를 사용하면 쉽게 풀리지만 동적계획법을 연습 중이기 때문에 동적계획법으로도 풀어봤습니다. /* 회사에 회의실이 하나밖에 없는데, n(0; i--) for(int j=i-1; j>0; j--) if (meeting[i].start > meeting[j].end) { before[i] = j; break; } } int schedule(int idx) { if (id..

algospot MATCHORDER

문제 링크입니다: https://algospot.com/judge/problem/read/MATCHORDERN의 범위가 1~100이기 때문에 완전탐색법과 동적계획법을 사용하면 시간초과가 발생하는 문제였습니다.따라서 탐욕 알고리즘을 사용하여 프로그램을 작성했습니다. #include #include #include #include using namespace std; int order(const vector &russian, const vector &korean) { int length = russian.size(), wins = 0; //아직 남아 있는 선수들의 레이팅 multiset ratings(korean.begin(), korean.end()); //성적 순 정렬 for (int rus = 0; r..

백준 1931번 회의실배정

문제 링크입니다: https://www.acmicpc.net/problem/1931탐욕법(greedy method)을 이용하여 푸는 문제였습니다. /* 한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의들에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 최대수의 회의를 찾아라. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다. */ #include #include #include using namespace std; int N..

알고리즘/BOJ 2018.02.13

백준 11052번 붕어빵 판매하기

문제 링크입니다: https://www.acmicpc.net/problem/11052'(i-j)개 세트 팔았을 때 최대값 + j개 세트 가격' 이 부분이 핵심이였습니다. /* 강남역에서 붕어빵 장사를 하고 있는 해빈이는 지금 붕어빵이 N개 남았다. 해빈이는 적절히 붕어빵 세트 메뉴를 구성해서 붕어빵을 팔아서 얻을 수 있는 수익을 최대로 만드려고 한다. 붕어빵 세트 메뉴는 붕어빵을 묶어서 파는 것을 의미하고, 세트 메뉴의 가격은 이미 정해져 있다. 붕어빵 i개로 이루어진 세트 메뉴의 가격은 Pi 원이다. 붕어빵이 4개 남아 있고, 1개 팔 때의 가격이 1, 2개는 5, 3개는 6, 4개는 7인 경우에 해빈이가 얻을 수 있는 최대 수익은 10원이다. 2개, 2개로 붕어빵을 팔면 되기 때문이다. 1개 팔 때의..

알고리즘/BOJ 2018.02.13

백준 1010번 다리 놓기

문제 링크입니다: https://www.acmicpc.net/problem/1010이 문제의 핵심은 서쪽의 첫번째 사이트가 연결한 다리를 고정으로 놓고 부분문제로 나누는 것이였습니다.테스트 케이스를 입력 받고 그만큼 반복해서 답을 도출해야하기 때문에 미리 모든 경우의 수를 계산해놓고 결과를 출력하는 형식으로 코드를 작성했습니다. /* 강 주변에서 다리를 짓기에 적합한 곳을 사이트라고 한다. 재원이는 강 주변을 면밀히 조사해 본 결과 강의 서쪽에는 N개의 사이트가 있고 동쪽에는 M개의 사이트가 있다는 것을 알았다. (N ≤ M) 재원이는 서쪽의 사이트와 동쪽의 사이트를 다리로 연결하려고 한다. (이때 한 사이트에는 최대 한 개의 다리만 연결될 수 있다.) 재원이는 다리를 최대한 많이 지으려고 하기 때문에 ..

알고리즘/BOJ 2018.02.13

백준 2193번 이친수

문제 링크입니다: https://www.acmicpc.net/problem/2193규칙을 찾다보면 피보나치 수열과 동일하다는 것을 알 수 있습니다.핵심은 캐시와 반환값을 long long으로 선언하는 것이였습니다. /* 0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다.이친수는 다음의 성질을 만족한다. 1.이친수는 0으로 시작하지 않는다. 2. 이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다. 예를 들면 1, 10, 100, 101, 1000, 1001 등이 이친수가 된다.하지만 0010101이나 101101은 각각 1, 2번 규칙에 위배되므로 이친수가 아니다. N(1..

알고리즘/BOJ 2018.02.12

algospot GENIUS

문제 링크입니다: https://algospot.com/judge/problem/read/GENIUS두니발 박사의 탈옥(http://jaimemin.tistory.com/335)과 유사한 문제였습니다.다른 점이라면 다음 곡이 나올 확률이 다르다는 점이였습니다.직관적으로 해석해서 프로그래밍을 하면 편하지만 K(시간)의 범위가 크기 때문에 시간초과가 발생합니다.따라서 피보나치 수열처럼 행렬을 사용하여 푸는 것이 핵심입니다. #include #include #include using namespace std; int songNum, K, length[50]; //곡 갯수, K분 후, 곡의 길이 double T[50][50]; //다음에 나올 곡 확률 class SquareMatrix { private: vec..