구름톤 챌린지/week1 5

구름톤 챌린지 DAY5 - 이진수 정렬

문제) 정수가 여러개 주어지는데, 각 정수들을 이진수로 표현했을 때 1의 개수가 많은 순으로 정렬하려고 한다. 이때 K번째 정수가 무엇인지 구하라 (1의 개수가 같을 때는 10진수에서 큰 순서 대로) 두 가지 방법을 생각했는데, 1. 먼저 내림차순으로 정렬한 다음 순서대로 1의 개수를 구해서 해시테이블? 연결 리스트?에 저장 2. 우선 1의 개수를 먼저 다 구해서 개수가 많은 것부터 정렬을 해서 합치기 결론적으로는, 2번으로 하다가 부분 성공을 했다. 인자들이 많아지면서 Timeout이 걸린다. algorithm 헤더파일을 사용하기 싫어서, 가장 큰 값을 구하고 그 값을 최종 벡터에 넣고 원래 있던 벡터에선 없애고 다시 그걸 반복하는 그런 코드를 짰었다. 우선, 2진수로 표현하는 과정에서 1의 개수를 r..

구름톤 챌린지 DAY4 - 완벽한 햄버거 만들기

문제) 1. 햄버거 재료의 수와 각 재료의 맛을 받아오고, 2. 햄버거의 맛은 모든 재료의 합을 뜻한다. 3. 가장 큰 숫자의 재료를 기준으로, 위랑 아래로 작아지거나 같아야 한다. 이 조건을 못지키면 햄버거의 맛은 0이 된다. 문제를 보고 해야하는 건, 1. 각 재료들 중 가장 큰 값을 찾는다. 2. 가장 큰 값을 기준으로 왼쪽, 오른쪽으로 갈수록 작아져야 한다. 2.가 문제일텐데, 이건 반복문이나 재귀함수로 풀 수 있을 것 같다. 가장 큰 값을 기준으로 반반 나누는 걸 보니, 합병정렬이 생각나서 재귀함수로 풀어보고 싶어졌다. 재귀함수는 각각 이렇게 해주었다. 왼쪽으로 가는건 lower함수, 오른쪽으로 가는건 upper함수고, 각각 비교한 뒤 왼쪽으로 한칸씩 가서 또 비교하는 함수이다. 만약 작아지지 ..

구름톤 챌린지 DAY3 - 합 계산기

문제) 계산 식의 개수와 각 계산 식이 주어지면, 각 계산 식의 값을 모두 더한 값을 출력 첫 줄에 식의 개수(T), 그 다음 줄부터 식의 개수에 따른 식 1. 구조체 생성 이번 문제는 한 줄에 정수 두개, operator 하나를 받아 계산하는 문제인데, 이를 좀 더 편하고 가독성 있게 사용하기 위해 구조체를 만들었다. 피연산자 두개, 연산자 하나, 그리고 그 식의 결과를 담을 수 있는 Formula 구조체이다. 2. 식의 개수 받아오기 T는 식의 개수로서, 입력받는다. 3. 계산식 받아오기 T만큼 반복하는 반복문 안에서, 만들어뒀던 구조체 타입의 formula 변수를 선언하고, cin으로 정수1, 연산자, 정수2를 받아온다. 4. 연산자에 따라 식 계산 받아온 연산자에 따라 그에 맞는 계산을 하기 위해..

구름톤 챌린지 DAY2 - 프로젝트 매니징

문제 요약) 1. 일을 하는데, 일의 개수, 각 일마다 걸리는 시간, 시작하는 시간이 주어질 때 종료 시간을 구하라. (23시 59분에서 1분이 지나면 0시 0분이다.) 첫 줄이 일의 개수(N), 그 다음줄이 시작 시간(T M), 그 다음줄이 일의 개수 만큼의 걸리는 시간이다. 우선 문제를 주석으로 정리하면, 위와 같다. 우선 N과 T, M을 받아서 범위 체킹을 한다. 일감은 N만큼 받아와야 하는데, 동적 배열을 만들어도 되지만 C++를 한 김에 좀 더 편리한 벡터를 사용하기로 했다. #include 로 벡터를 추가한 후, Ci vector를 만든 후, 값 체킹을 한 후 push_back하는 코드이다. 이후가 문제인데, 사실 이 문제는 시간 계산이 주 목적인 것 같다. 두 가지 방법 정도가 있는데, 받아..

구름톤 챌린지 DAY1 - 운동 중독 플레이어

오늘부터 구름톤 챌린지를 시작했다. (요즘 너무 나태해졌기 때문이다..) 마침 매일 1코딩문제를 하려고 했었는데, 이번 챌린지를 통해서 실천할 수 있게 되어 기쁘다. 먼저 DAY1! [운동 중독 플레이어] 1RM을 구하는 문제였다. 1RM을 구하는 식을 주고, 그 식에 맞는 인자를 입력값으로 넣고, 소수점을 버린 뒤 출력하는 문제였다. 1일차라 그런지 생각보다 쉬웠다. 먼저 C++로 언어를 지정한 다음 기본 코드를 주석처리 해줬다. 요즘 C++이 좋아져서 연습하기 위해 C++로 지정하였다. 그 다음으로는 예외처리를 해주었다. 문제에서 W(무게)의 범위는 1이상 1,000,000이하, R(반복 횟수)의 범위는 1이상 100이하였기에 이 범위를 넘어가면 오류메시지를 출력한 후 바로 return 한다. 다음으..