전체 글

전체 글

    [C++] vector [], at 속도차이와 고찰

    C++ 에서 Vector 컨테이너는 index를 조회하는 두가지 함수를 제공한다. 아래 두개가 그 예시이다. v.at(index); v[index]; 이것의 차이점은 그러면 무엇일까? 우선 인터넷을 찾아보면 쉽게 알수 있는 정보는 다음과 같다. v.at(index)를 사용하면, 범위를 점검하기에 안전하고, v[index]는 범위를 점검하지 않기에 빠르다. 범위를 점검한다? 도대체 무슨 범위를 점검 하는 것일까? 한번 좀더 디테일하게 살펴보도록 하자. 실제로 vector header의 at method를 살펴보면, (line 1557~) input으로 들어온 index가 벡터의 사이즈를 초과하면, throw 하게 되어있음을 확인 할 수 있다. 당연히 이러한 범위 체크 과정이 들어가기에 속도는 느릴 수 밖에..

    [백준] 음계

    https://www.acmicpc.net/problem/2920 2920번: 음계 다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8 www.acmicpc.net 간단한 구현 문제입니다. 우선 문제부터 간단하게 요약하면, 1 2 3 4 5 6 7 8 이렇게 8개의 숫자가 들어올 때, 이 것이 ascending인지, descending인지, mixed인지를 출력해야 하는 문제입니다. ascending과 descending은 각각 1 2 3 4 5 6 7 8, 8 7 6 5 4 3 2 1로 정해져 있기에 만약 이 두개가..

    [백준] 나머지

    https://www.acmicpc.net/problem/3052 3052번: 나머지 각 수를 42로 나눈 나머지는 39, 40, 41, 0, 1, 2, 40, 41, 0, 1이다. 서로 다른 값은 6개가 있다. www.acmicpc.net 간단한 구현문제입니다. 우선 문제부터 간단하게 요약하면, 숫자 10개가 주어질 때, 이 숫자들을 42로 나누었을 때의 나머지의 종류의 갯수를 출력해야 합니다. map 자료구조를 이용하여, 각각의 나머지를 count 한 뒤에 총 key의 갯수를 출력하는 방식으로 구현하였습니다. 실제 구현은 아래와 같습니다. #include #include int main(){ int array[10]; std::map my_map; for(int i=0; i> array[i]; } f..

    [백준] OX퀴즈

    https://www.acmicpc.net/problem/8958 8958번: OX퀴즈 "OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, 10번 문제의 점수 www.acmicpc.net 간단한 구현 문제입니다. 우선 문제부터 간단하게 요약하면, O인 문제들에 대해 점수를 주는데, 각 문제의 점수는 그 문제까지의 연속한 O의 갯수로 정의합니다. 이때, 각각의 OX표에서 총 점수의 합을 구해서 print해야 하는 문제입니다. 변수를 두어 계속 늘려주면서 연속한 O를 counting하고, 만약 X를 만나게 되면 다시 초기화 시켜주는 형태로 코드를 진행하면 됩니다. ..

    [백준] 별 찍기 - 2

    https://www.acmicpc.net/problem/2439 2439번: 별 찍기 - 2 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오. www.acmicpc.net 간단한 구현 문제입니다. 우선 문제부터 간단하게 요약하면, 숫자 N이 주어지면, 별을 1개부터 N개까지 우측 정렬하여 출력해야 하는 문제입니다. 간단하게 for loop를 이용하여 구현하면 됩니다. #include int main(){ int k; std::cin >> k; for(int i = 0; i

    [백준] 단어공부

    https://www.acmicpc.net/problem/1157 1157번: 단어 공부 알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다. www.acmicpc.net map 자료구조를 이용하는 문제입니다. 우선 문제부터 간단하게 요약하면, 알파벳 대소문자로 만들어진 단어가 주어지면, 단어에서 가장 많이 사용된 알파벳이 무엇인지 대문자로 출력해야 합니다. 우선 대소문자로 된 알파벳을 대문자 혹은 소문자 하나로 통일한 후, 각각의 알파벳의 갯수를 map자료구조로 counting한 후, 결과를 도출하면 됩니다. 실제 구현은 아래와 같습니다. #include #include #include #incl..

    map 안의 원소 출력

    /* map 등의 자료구조는 알아서 변경해서 사용하기 */ for(map::iterator it = s_map.begin(); it != s_map.end(); ++it) { std::cout first

    [C++] map과 defaultdict

    https://www.geeksforgeeks.org/default-values-in-a-map-in-c-stl/ Default values in a Map in C++ STL - GeeksforGeeks A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions. www.geeksforgeeks.org C++에서 map자료구조는 처음 선언 될 때는 empty하다. 하지만, [] 등으로 조회..