전체 글 2408

최대 부분 수열 직접 구하기(LIS)

http://jaimemin.tistory.com/317?category=985009에서는 LIS의 길이만 구했는데 이번에는 직접 최대 부분 수열까지 구해보는 코드입니다. /*최대 증가 부분 수열을 실제로 계산하기*/#include #include #include #include //memsetusing namespace std; int length; //수열 길이int cache[101], S[100], choices[101];//S[start]에서 시작하는 증가 부분 수열 중 최대 길이 반환int LIS(int start){ int &result = cache[start + 1]; if (result != -1) return result; result = 0; int bestNext = -1; for..

동물의 숲 포켓캠프 1/30 업데이트 내용

2018년 1월 30일 오후에 업데이트된 내용을 전해드리겠습니다.Francine과 Stitches가 방문했습니다!새로운 동물 친구들이 등장했습니다!또한 그들이 좋아하는 가구들을 추가했습니다. 새로운 동물들이 좋아하는 가구들을 만들어주면, 새로운 동물들을 캠핑장에 초대할 수 있습니다!캠핑장에 초대를 받고 온 동물들은 다음과 같은 아이템들을 만들어달라고 할 수 있습니다. Francine만들 수 있는 아이템: teacup ride(컵돌리기 놀이기구) Stitches만들 수 있는 아이템:popcorn machine(팝콘 기계) Merengue만들 수 있는 아이템: candy machine(사탕 기계) Bob만들 수 있는 아이템: boot sculpture(장화 동상) Twiggy만들 수 있는 아이템: matry..

카테고리 없음 2018.01.30

codewars: Tank Truck

문제 링크입니다: https://www.codewars.com/kata/tank-truck/train/cpp수학을 오랜만에 하려니 정말 막막했습니다.인터넷으로 공식을 모두 검색한 결과 풀 수 있었습니다!아래 그림은 부연설명용으로 편집한 그림입니다. /* 이웃집에 탱크 트럭을 모는 아저씨가 산다. 기름이 어느정도 남았는지 표시하는 등이 나가버려서 이웃집 아저씨는 남은 기름으로 배달이 가능한지 판별을 할 수 없는 상태이다. 그래서 트럭을 평평한 땅 위에 둔 다음에 탱크의 연료의 높이를 측정하였다. 운이 좋게도 탱크의 연료통은 완벽한 원기둥이다. 남은 연료의 높이는 h, 지름은 d, 그리고 총 부피는 vt이다. 남은 연료의 부피를 구하시오 */ #include #include using namespace st..

codewars: Statistics for an Athletic Association

문제 링크입니다: https://www.codewars.com/kata/statistics-for-an-athletic-association/train/cpp문제 해석하는데 걸린 시간 정말 오래 걸렸습니다.처음에 hh|mm|ss가 팀 당 3명씩 출전시켜서 hh, mm, ss 그룹끼리 평균을 내는 문제인 줄 알았다가 한참 지나고 나서야 시간/분/초 기록인 것을 깨달았습니다.또한 hh/mm/ss 중 하나라도 00이라면 NULL 포인터가 들어간다고 문제에 적혀있어서 예외처리하느라 코드가 상당히 지저분해졌습니다.개인적으로 마음에 드는 코드는 아니지만(이쁘지 않고 상당히 지저분합니다 ㅠ) 그래도 풀었다는 것에 의의를 두고 나중에 수정해보겠습니다! /*당신은 지역 스포츠팀의 "컴퓨터 전문가"이다.많은 팀의 육상선수..

codewars: Simple Encryption #1 - Alternating Split

문제 링크입니다: http://www.codewars.com/kata/57814d79a56c88e3e0000786/train/cpp문제 해석하는게 진짜 힘들었습니다. 2nd char을 계속 두번째 문자라고만 해석해서 처음에 접근을 완전 엉뚱하게 했습니다.every 2nd char이라고 하면 짝수번째 인덱스에 있는 문자라고 해석했어야했네요. /*문자열을 암호화하는 방법:짝수번째 문자들을 모두 이어붙인 뒤 뒤에 홀수번째 문자들을 모두 이어붙인다이 것을 n번 진행하시오! 또한 복호화하는 함수도 작성하시오*/#include #include using namespace std; std::string encrypt(std::string text, int n){ int length = text.length(); //..

codewars: Build a pile of Cubes

문제링크입니다: http://www.codewars.com/kata/5592e3bd57b64d00f3000047/train/cpp /*n개의 큐브를 쌓는 것이 당신의 임무이다.제일 밑에 있는 큐브는 부피가 n^3이고 그 다음 큐브는 (n-1)^3,그 다음은 (n-2)^3 ... 그리고 제일 위에 있는 큐브는 1^3이다.총 부피 m을 매개변수로 받고 n이 존재한다면 n을 반환하고그렇지 않다면 -1을 반환하시오*/#include using namespace std; class ASum{public: static long long findNb(long long m);}; long long cube(long long n) //3제곱{ int multiply = n; for (int i = 0; i < 2; i+..

codewars: Fibonacci, Tribonacci and friends

문제 링크입니다: https://www.codewars.com/kata/556e0fccc392c527f20000c5/train/cpp피보나치 수열의 원리만 안다면 쉽게 풀 수 있습니다. /*피보나치 수열은 F(n)=F(n-1)+F(n-2) 이런식으로 구한다.조금 더 확장해보자.Quadribonacci는 F(n)=F(n-1)+F(n-2)+F(n-3)+F(n-4)이다.그렇다면 Xbonacci는 F(n)=F(n-1)+...+F(n-x)이다.Xbonacci를 구하는 프로그램을 작성하시오*/#include #include using namespace std; std::vector xbonacci(std::vector signature, int n){ int length = signature.size(); if (..

algospot NUMB3RS

문제 링크입니다: 물론 완전탐색 알고리즘을 사용한다면 쉽게 풀 문제이지만 동적 계획법을 사용하여 문제를 푸는 것이 실력 향상에는 도움이 될 것 같습니다.여기서 중요한 포인트는 감옥에서 나온 날부터 시작하는 것이 아니라 찾고자 하는 마을, 즉 day일부터 거꾸로 답을 구하는 형식이라는 것입니다! /*위험한 살인마 두니발 박사가 감옥에서 탈출했다.그는 다음과 같은 조건으로 도주를 한다.1. 두니발 박사는 검문을 피해 산길로만 이동2. 두니발 박사는 교도소를 탈출한 당일, 교도소와 인접한 마을 하나로 도망쳐 은신한다3. 두니발 박사는 수색을 피하기 위해 매일 인접한 마을로 움직여 은신한다. 마을의 수, 탈출 후 지금까지 지난 일 수, 교도소가 있는 마을번호를 입력하고마을 그래프를 입력한다.(2차원 행렬에 인접..

codewars: Consecutive strings

문제 링크입니다:http://www.codewars.com/kata/56a5d994ac971f1ac500003e/train/cpp /*string 배열과 int형 변수 k가 주어졌다.배열의 요소(문자열)를 k번 연속으로 이어붙였을 때 제일 긴 문자열을 반환하시오*/#include #include #include using namespace std; //using namespace std를 작성했지만 codewars 컴파일러에서는 std::를 붙이게끔 했기 때문에 std::를 붙였다class LongestConsec{public: static std::string longestConsec(std::vector &strarr, int k);}; std::string LongestConsec::longestC..

codewars: A Rule of Divisibility by 13

문제 링크입니다: https://www.codewars.com/kata/564057bc348c7200bd0000ff/train/cpp재귀를 이용하면 상당히 쉽게 풀 수 있는 문제입니다. /*배열이 다음과 같이 주어졌다고 하자 {1, 2, 3, 4, 3, 2, 1};3번째 index를 기준으로 왼쪽과 오른쪽의 합이 6으로 같기 때문에당신의 함수는 3을 반환해야한다.다른 예시로는 {1, 100, 50, -51, 1, 1};이 있다.1번째 index를 기준으로 왼쪽과 오른쪽의 합이 1로 같기 때문에당신의 함수는 1을 반환해야한다.*/#include #include using namespace std; //배열이 정렬이 되어있다면 binary search로 풀었겠지만//정렬을 할 수 없기 떄문에 무식하게 풀었다..