반응형

알고리즘 공부/C++ 345

백준 28702번 FizzBuzz C++

리뷰문제에 대한 이해가 잘 되지 않아 풀이에 생각보다 시간이 오래 걸렸다. 브론즈 문제 아닌거같은데.. 문제 풀이받아온 문자열을 정수로 변환해 주는 함수 to_int를 작성해 주고 받아온 문자열 세개를 각각 함수를 돌려준다.만약 문자열이 FizzBuzz 라면 -15를 리턴, Fizz라면 -3, Buzz라면 -5를 리턴해 준다.아무것도 해당이 되지 않으면 문자열을 정수형으로 바꾸어 리턴정답 변수를 정수형으로 초기화 하고 만약 첫번째 문자열이 0이상 즉, Fizz나 Buzz나 FizzBuzz가 아닐 경우 3을 더한값을 정답 변수에 할당해 준다, 두번째 문자열일 경우 +2, 세번째 문자열일 경우 +1to_str 함수를 작성하고 정답 변수에 저장된 정수가 15의 배수면 FizzBuzz, 3의 배수면 Fizz, ..

백준 30802번 웰컴 키트 C++

리뷰  문제 풀이셔츠의 총 개수를 변수 n에 입력을 받고 각 사이즈의 셔츠 개수 정보를 벡터에 추가해 준다.이후 티셔츠 묶음과 펜 묶음을 각각 변수 t, p에 받아주고 변수 cnt를 0으로 초기화 해준다.셔츠 개수를 t로 나눈 값을 변수 cnt에 더해준다. (소숫점이 발생할 경우 올림 처리해 준다.)cnt를 출력해 준 후, n을 p로 나눈 몫과 나머지를 각각 출력해 주면 된다.  참고 사항없음  정답 코드#include #include #include #include using namespace std;int main() { int n, a, t, p, i, j; vector shirts; cin >> n; for (i = 0; i > a; shirts.push_back(a); } cin >> t >>..

백준 2822번 점수 계산 C++

리뷰map을 처음으로 사용해 보았다. 파이썬 딕셔너리가 훨 편하다.. 문제 풀이각 점수와 인덱스를 저장하기 위해 map을 통해 점수는 key로 인덱스는 value로 받아왔다.벡터에는 값만 저장 후 내림차순으로 정렬하여 상위 5개 점수의 합을 구해주었다.인덱스를 나타낼 벡터를 새로 초기화 하고 상위 5개 점수를 키로 갖는 인덱스를 해당 벡터에 추가해 주었다.상위 5개 점수의 합 출력 인덱스 벡터를 오름차순으로 정렬 후 상위 5개의 인덱스 출력 참고 사항모든 문제에 대한 점수는 서로 다르기에 점수를 map의 key값으로 받아도 괜찮다.  정답 코드#include #include #include #include #include using namespace std;int main() { map dic; vect..

백준 5054번 주차의 신 C++

리뷰첫C++ 정렬 문제였다. 문제 풀이상점의 위치를 벡터의 인자로 받아준다. 입력받은 벡터를 오름차순으로 정렬해 준다.가장 주차하기 좋은 장소는 첫번째 상점의 위치이다. 첫번째 상점부터 벡터의 요소까지의 거리를 계산해 준다.모든 거리를 더해준 후 마지막으로 차로 돌아오는 거리를 계산해 준다.모든 거리 합을 출력해 주면 된다. 참고 사항내림 차순으로 정렬해도 상관 없을듯 하다.  정답 코드#include #include #include using namespace std;int main() { int t, n, i, j, num; cin >> t; for (i = 0; i > n; vector lst; for (j = 0; j > num; lst.push_back(num); } int ans =..

백준 1292번 쉽게 푸는 문제 C++

리뷰벡터에 값을 넣어 주고 구간 합을 구하는 문제 문제 풀이벡터를 0으로 초기화 해준다. 0번 인덱스는 참조할 일이 없다.구간의 최대 범위가 1000이므로 벡터를 길이 1000이상이 되도록 만들어준다.2중 while문을 통해 1, 2, 2, 3, 3, 3, 4, 4, 4, 4 .. 의 값을 벡터에 push 해준다.합을 구할 구간을 나타낼 두 변수를 입력 받고 해당 구간의 합을 구한 뒤 출력해 준다. 참고 사항없음  정답 코드#include #include using namespace std;int main() { vector lst = { 0 }; int index = 1; int a, b; cin >> a >> b; while (lst.size()

백준 2953번 나는 요리사다 C++

리뷰배열에서 가장 큰 합을 가진 행의 값과 인덱스를 구하는 문제 문제 풀이2차원 배열 안에 입력값을 받아와 준다.각 행의 값의 합을 최대값과 비교하고, 최대값보다 높은 합을 가진 행이면 그 인덱스를 저장한다.합이 가장 큰 행의 합과 해당 행의 인덱스를 출력해 준다. 참고 사항인덱스에 +1을 해줘야 해당 참가자의 번호가 된다.  정답 코드#include #include using namespace std;int main() { int lst[5][4]; for (int i = 0; i > lst[i][j]; } } int max_index = 0; int max_val = 0; for (int i = 0; i max_val) { max_val = temp; max_index = i + 1; }..

백준 2592번 대표값 C++

리뷰배열의 평균과 max_count값을 구하는 문제 문제 풀이길이 10짜리 배열을 초기화 후 해당 배열에 입력값을 모두 받아준다.배열내 요소의 값을 모두 더해주고 해당 값이 배열내에 몇개 존재하는지 찾아준다.현재 최대 많이 나온 값이라면 해당 값을 저장해 주고 더 많이 나온 값이 있다면 최신화 해준다.배열 내 요소의 값을 10으로 나눈 값과 가장 많이 나온 값을 출력해 준다. 참고 사항없음  정답 코드#include #include using namespace std;int main() { int a, i, j; int sum = 0; int nums[10]; for (i = 0; i > nums[i]; } int max_cnt = 0; int max_val = 0; for (i = 0; i

백준 10995번 별찍기 - 20 C++

리뷰나머지를 활용한 문제 문제 풀이입력받은 n의 수만큼 for문을 개행해 준다.만약 현재 for문의 실행 횟수가 짝수번째 일 경우 "* "를 n개만큼 출력해 준다.반대로 홀수번째 일 경우 " *"를 n개만큼 출력해 준다. 참고 사항for문에서 i값을 적절히 배분하면 된다.  정답 코드#include using namespace std;int main() { int n, i, j; cin >> n; for (i = 0; i

백준 2921번 도미노 C++

리뷰처음엔 문제가 이해가 안됐고, 이해가 된 후에는 점화식을 어떻게 세워야 할지 고민이 됐다. 정답률이 어떻게 80%가 넘는거지? 문제 풀이경우의 수를 생각하면 도미노 한칸은 i, 다른 도미노 한칸은 j라고 생각해 보자i도미노가 0 ~ n까지 들어올때 j도미노는 i부터 n까지 들어올 수 있다.예를 들어 n이 3이라면 i도미노가 0일때 j도미노는 0~3까지 들어올 수 있다.i도미노가 1일때 j도미노는 1~3까지 들어올 수 있다. 이를 n까지 반복한다.for문이 종료되면 최종 정답을 출력해 준다. 참고 사항n                1x011             y001            2x012122          y000112         3x0123123233      y0000111223..

728x90
반응형