C++ vector 에서 erase 함수 사용할 때 주의할 점
2019. 7. 26. 01:00
프로그래밍 언어/C++
vector의 값을 반복문을 통해 값을 출력할 때 주의할 점이 있다. iterator erase (const_iterator position); iterator erase (const_iterator first, const_iterator last); 설명하기 전에 erase 함수에 대해 간단하게 설명하자면 iterator erase (const_iterator position); const_iterator 타입의 position 은 제거할 요소를 가리킨다. iterator erase (const_iterator first, const_iterator last); first 와 last 사이의 모든 요소를 포함해서 요소들을 제거한다. erase 함수를 통해 요소를 지우게 되면 지운 요소 뒤에 있는 요소를..
[Programmers] Level 1. 체육복 (C++)
2019. 7. 26. 00:00
알고리즘/Programmers
정리 정말 많은 고민을 했던 문제였다. 처음에 문제를 보고나서 어떻게 풀지 고민을 했는데 2가지 방법이 생각이 났다. 첫 번째는, 체육복이 있으면 1, 체육복이 없으면 0, 여벌의 체육복이 있으면 2 로 정해두고 여벌의 체육복이 있는 학생의 수를 1 감소하고 없는 학생의 수를 1로 증가시켜서 마지막에 1인 학생의 수를 세서 출력하는 방법이다. 두 번째는, 체육복이 없는 학생을 일단 제외하고 여벌의 체육복이 있는 학생의 것을 빌려주면서 카운트를 더하는 방식이었다. 결과는 두 번째 방법으로 풀었는데 2~3시간 가량 고민 끝에 해결한 문제였다. 이 문제를 이렇게 풀어보았다. 1) 체육복을 잃어버린 학생과 여벌의 체육복이 있는 학생이 같다면 제외시켜준다. 2) 전체 학생에서 체육복을 잃어버린 학생을 빼준다. 3..
[Programmers] Level 1. 모의고사 (C++)
2019. 7. 25. 23:24
알고리즘/Programmers
정리 수포자 3명이 있고, 3명이 각각 정해진 규칙에 맞춰 답을 작성해서 제출한다. 1번부터 답이 정해져있기 때문에 규칙적으로 반복되는 정답의 갯수를 이용해 정답을 체크해준다. 정답의 갯수가 정해져 있어 그 수만큼 반복되기 때문에 나머지를 구해서 맞은 정답의 갯수를 구해준다. 정답일 때, 카운트를 세어주고 문제에서 가장 많은 정답을 맟춘 학생을 출력해야하기 때문에 카운트가 많은 수포자를 answer 에 넣어준다. 따라서, 이 문제는 이렇게 풀어보았다. 1) 수포자가 정해진 답을 계속해서 반복한다는 점. 그리고 수포자는 어떤 문제가 나와도 이 정답만 제출한다. 2) 정답이 반복되기 때문에 반복되는 정답의 갯수를 구한다. 3) 반복되는 정답의 갯수가 5개이고, 7번 문제라면 7를 5로 나눈 나머지인 2 번째..
[Programmers] Level 1. 소수의 합 (C++)
2019. 7. 25. 22:50
알고리즘/Programmers
정리 소수를 구하는 문제였다. 소수를 구하는 방법 중 가장 많이 알려져있는 알고리즘은 에라토르테네스의 체 다. 에라토스테네스의 체를 간단하게 설명해보면, 2부터 시작한다. 그리고 2부터 자신을 제외한 자신의 배수를 제거한다. 2를 제외한 2의 배수를 제거하고, 3을 제외한 3의 배수를 제거하고, 4는 2의 배수이기 때문에 이미 제거가 되어있다. 이미 제거가 되어있는 수들은 건너뛰고 진행한다. 위와 같은 과정을 반복하면 남아있는 숫자는 소수가 될 것이다. 따라서, 에라토스테네스의 체를 이용해서 풀면 쉽게 풀 수 있는 문제였다. 소스 코드 #include using namespace std; long long solution(int N) { long long answer = 0; vector m; for(i..
알고리즘 사이트 정리
2019. 7. 24. 11:00
알고리즘/개념정리
백준 알고리즘 온라인 저지 (BOJ) Baekjoon Online Judge Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다. www.acmicpc.net 프로그래머스 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr SW Expert Academy SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! www.swexpertacademy.com LeetCode LeetCode - The World's Leading Online Programming Lea..
[C++] 개념정리 사이트 메모
2019. 7. 24. 10:45
프로그래밍 언어/C++
C++ 관련된 개념이 잘 설명되어있는 사이트 메모해두기 C++ STL(Standard Template Library) C++ vertor 에 대해서 이해하기
[백준 알고리즘] 4948번 : 베르트랑 공준
2019. 7. 21. 16:09
알고리즘/BaekJoon
문제 베르트랑 공준은 임의의 자연수 n에 대하여, n보다 크고, 2n보다 작거나 같은 소수는 적어도 하나 존재한다는 내용을 담고 있다. 이 명제는 조제프 베르트랑이 1845년에 추측했고, 파프누티 체비쇼프가 1850년에 증명했다. 예를 들어, 10보다 크고, 20보다 작거나 같은 소수는 4개가 있다. (11, 13, 17, 19) 또, 14보다 크고, 28보다 작거나 같은 소수는 3개가 있다. (17,19, 23) n이 주어졌을 때, n보다 크고, 2n보다 작거나 같은 소수의 개수를 구하는 프로그램을 작성하시오. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 케이스는 n을 포함하며, 한 줄로 이루어져 있다. (n ≤ 123456) 입력의 마지막에는 0이 주어진다. 출력 각 테스트 케이스에 대..
[백준 알고리즘] 1476번 : 날짜 계산
2019. 7. 21. 14:35
알고리즘/BaekJoon
문제 준규가 사는 나라는 우리가 사용하는 연도와 다른 방식을 이용한다. 준규가 사는 나라에서는 수 3개를 이용해서 연도를 나타낸다. 각각의 수는 지구, 태양, 그리고 달을 나타낸다. 지구를 나타내는 수를 E, 태양을 나타내는 수를 S, 달을 나타내는 수를 M이라고 했을 때, 이 세 수는 서로 다른 범위를 가진다. (1 ≤ E ≤ 15, 1 ≤ S ≤ 28, 1 ≤ M ≤ 19) 우리가 알고있는 1년은 준규가 살고있는 나라에서는 1 1 1로 나타낼 수 있다. 1년이 지날 때마다, 세 수는 모두 1씩 증가한다. 만약, 어떤 수가 범위를 넘어가는 경우에는 1이 된다. 예를 들어, 15년은 15 15 15로 나타낼 수 있다. 하지만, 1년이 지나서 16년이 되면 16 16 16이 아니라 1 16 16이 된다. ..