본문 바로가기

분류 전체보기106

[Python] enumerate, BOJ 17389번 보너스 점수 풀이 Python enumerate란? 파이썬의 for in 반복문에서 유용하게 쓰이는 함수이다. 순서가 있는 자료형(리스트, 튜플, 문자열)을 입력으로 받아 인덱스 값을 포함하는 enumerate 객체를 리턴한다. 리스트를 탐색할 때 리스트의 크기를 받아 인덱스로 접근하기 보다 enumerate를 사용하는 편이 좋다. enumerate는 열거하다는 뜻을 가지고 있다. BOJ 17389번 보너스점수 문제풀이 백준 문제풀이로 활용해보도록 하겠다. https://www.acmicpc.net/problem/17389 17389번: 보너스 점수 숭고한 알고리즘 캠프 퀴즈 타임이 시작되었다! PS 기초, 동적 계획법, 파라메트릭 서치, 욱제의 생일, 탐색, 그리디, 최단경로 알고리즘, 구데기컵, 서로소 집합, 최소 신.. 2020. 1. 3.
[C++, Hash] 프로그래머스 베스트앨범 문제 풀이 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42579 코딩테스트 연습 - 베스트앨범 | 프로그래머스 스트리밍 사이트에서 장르 별로 가장 많이 재생된 노래를 두 개씩 모아 베스트 앨범을 출시하려 합니다. 노래는 고유 번호로 구분하며, 노래를 수록하는 기준은 다음과 같습니다. 속한 노래가 많이 재생된 장르를 먼저 수록합니다. 장르 내에서 많이 재생된 노래를 먼저 수록합니다. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록합니다. 노래의 장르를 나타내는 문자열 배열 genres와 노래별 재생 횟수를 나타내는 정수 배열 play programmers.co.kr 풀이 참고하지 않고 스스로 한 번에 풀어서 더욱 뿌듯한 문제이.. 2019. 12. 12.
[C++, Hash] 프로그래머스 위장 문제 풀이 문제링크 https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 | 프로그래머스 programmers.co.kr 풀이 기본적인 접근은 맞았는데 응용력이 부족했던 문제이다. 조합을 구성할 때 선택하지 않는다는 선지도 같이 포함시켜 계산한다는 것이 포인트이다. 대분류의 조합들을 hash를 통해 count하고 선택하지 않는다는 선지를 포함시켜 각각 +1 해준 뒤 곱하면 되는 것이다. 그리고 스파이가 하루에 최소 한 개의 의상은 입으므로 모두 입지 않는다는 경우의 수를 빼면 답이 된다. #include #include #include using namespace std; int solution(vector clothes) { int answ.. 2019. 12. 11.
[C++, Hash] 프로그래머스 전화번호 목록 문제 풀이 문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42577 코딩테스트 연습 - 전화번호 목록 | 프로그래머스 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 r programmers.co.kr 풀이 코딩테스트에서 해시관련 문제가 좀 약한 느낌이 들어서.. 2019. 12. 10.
[C++] class의 메모리 할당방법 (virtual 멤버함수, 일반멤버함수, 상속) 여러 가지 class의 메모리 할당에 대해 알아보겠습니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include using namespace std; class Person{ public: char name; char address; }; int main() { Person gildong; cout 2019. 11. 5.
[C++, Trie] 프로그래머스 가사 검색 문제 풀이 https://programmers.co.kr/learn/courses/30/lessons/60060 코딩테스트 연습 - 가사 검색 | 프로그래머스 programmers.co.kr 재밌는 문제이다. 이 문제로 인해 트라이 자료구조를 알게 되었다. 트라이는 문자열의 검색에 효율적인 자료구조이며 트리구조로 되어 있다. 처음에 문제를 보면 따로 트라이라는 자료구조를 공부한적 없는 분이라면 대부분 아래와 같은 해답을 떠올릴 것이다. 나 역시 그랬다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 #include #include using name.. 2019. 11. 3.
TCP, UDP의 공통점 차이점, 특징 TCP와 UDP의 공통점 포트 번호를 이용하여 주소를 지정한다. 두 애플리케이션이 통신하기 위해 반드시 포트 번호를 결정해야 한다. 데이터 오류를 체크한다. IP가 제공하는 오류 체크 기능은 프로토콜 동작을 위해 반드시 필요한 부분에만 국한된다. 즉 IP헤더에 대한 오류는 체크하지만 데이터에 대한 오류는 체크하지 않는다. 반면, TCP와 UDP는 헤더와 데이터에 대한 오류를 체크한다. TCP와 UDP의 차이점 TCP (Transmission Control Protocol) 연결형 (connnection-oriented) 프로토콜이며, 연결이 성공해야 통신이 가능하다. 데이터 경계를 구분하지 않는다. 바이트 스트림(byte-stream) 서비스 신뢰성 있는 데이터를 전송한다. 데이터의 순서 유지를 위해 각.. 2019. 11. 1.
[C, C++] #include <헤더파일>과 #include "헤더파일"의 차이 #include 과 #include "헤더파일"의 차이에 대해 알아보겠다. 어떤 헤더파일은 꺽쇠로 표시하고 어떤 것은 " "로 표시하는지 문득 궁금증이 들었다. 결론부터 말하면 둘의 주요한 차이점은 해당 헤더파일이 존재하는 경로의 차이이다. #include 컴파일러가 설치된 폴더에서 헤더 파일을 찾으라는 지시이다. 예를 들어서 iostream이나 stdio.h와 같은 헤더파일은 컴파일러와 같은 폴더에 같이 위치해 있다. 같은 경로에 있는 것이다. 따라서 꺽쇠로 표시해줘서 같은 경로에서 찾으라는 명령이다. #include "헤더파일" 사용자의 프로젝트 폴더나 개발자가 추가포함 디렉터리로 지정해준 경로에서 찾으라는 명령이다. 개발자가 만든 헤더파일이나 추가로 외부 라이브러리를 포함하고 싶은 경우 위와 같은 .. 2019. 10. 23.
[C++] 공백이 포함된 문자열 입력받기(char array, string : getline) C, C++에서 입력을 받을 때 "공백이 포함된 문자열"을 입력받는 법을 소개한다. Code 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include #include using namespace std; int main(){ //string string str; getline(cin, str); //getline(cin, str, '\n'); cout 2019. 10. 23.
객체 지향 프로그래밍 : Object-Oriented Programming(OOP) 객체 지향 프로그래밍(Object Oriented Programming:OOP)이란? 기존의 절차 지향형 프로그래밍 방식에서 벗어나 프로그램을 객체라는 기본 단위로 나누고 추상화하여 이 객체들의 상호작용으로 서술하는 프로그램 설계 방법론이자 개념의 일종 클래스 (Class) 어떤 문제를 해결하기 위한 데이터를 만들기 위해 현실 사물을 추상화를 거쳐 객체의 속성과 행위를 변수와 메서드로 정의한 것 객체를 정의하는 틀, 혹은 설계도 객체 (Object) 속성과 행위를 가진 객체 지향 프로그램의 기본단위 클래스에 의해 정의되어 프로그램이 실행되는 동안 실존하는 실체 혹은 인스턴스 추상화 (Abstraction) 현실의 사물들을 객체라 생각하고 상태, 행위 등 객체의 특징점을 선별하여 프로그래밍하는 것 캡슐화 .. 2019. 10. 22.
[C++] 문법 char to string , string to char 변환 문법 char to string , string to char 변환 1. char to string으로 변환하는 방법 string의 생성자를 이용, 생성 할 때 인자로 넘겨서 생성하는 방법 char배열의 이름을 사용해 대입연산자를 이용해 대입해주는 방법 2. string to char로 변환하는 방법 c_str()함수를 이용 해 string을 char로 변환시키고 그 값을 strcpy를 이용, 다른 char값에 복사하는 방법 EXAMPLE #include #include using namespace std; int main(){ //char to string char ch[10] = "hello"; string str1(ch); string str2=" "; str2=ch; cout 2019. 10. 16.
[C++, DFS, Bitmask] 백준 17471번 게리맨더링 문제풀이 문제 https://www.acmicpc.net/problem/17471 17471번: 게리맨더링 선거구를 [1, 4], [2, 3, 5, 6]으로 나누면 각 선거구의 인구는 9, 8이 된다. 인구 차이는 1이고, 이 값보다 더 작은 값으로 선거구를 나눌 수는 없다. www.acmicpc.net 해설 비트마스크라는 참신한 풀이법을 익힌 문제이다. 그래프 문제에서 유용하게 쓰일 수 있는 기법을 발견했다. 선거구 즉, 총 노드의 개수만큼 비트를 할당하여 방문할 노드 선정하는 방법이다. 코드에서 i는 노드에 방문할 총 가짓수를 나타내고 j는 실제 방문한 노드를 나타내어 dfs기법으로 각 노드를 탐색한다. 여기서 특정할 만한 건 i를 반전시켜 2개로 나눈 그룹의 인구를 다시 빼준다는 것이다. 끝에 모두 방문했는.. 2019. 10. 4.