본문 바로가기
  • 실행력이 모든걸 결정한다
반응형

분류 전체보기580

[완전탐색, 난이도 중] 프로그래머즈, 소수 찾기 종이 조각을 조합할 수 있는 모든 경우의 수를 탐색해야 하는 브루트포스 문제이다. prime_check 함수는 소수 여부를 판단하는 함수이다. 각 자릿수는 0~9로 이루어져 있으니 문자열 numbers를 문자 단위로 쪼개서 arr 벡터에 넣고 계산을 수행했다. 순열을 이용하여 arr 벡터의 요소들을 조합하여 자료형만 문자열인 정수를 만들어낸뒤, stoi 함수를 이용하여 자료형을 string에서 int로 변환해주었다. permutation이 순열 함수이고 매개변수는 (총 요소의 수, 고를 요소의 수, 재귀함수 깊이) 이다. 순열 알고리즘에 대해 다룬 포스팅 링크이다. kimcoder.tistory.com/115 재귀를 이용한 간단한 순열 알고리즘 이 소스코드는 중복 요소도 허용한다. 중복 요소를 지우고 싶.. 2020. 9. 22.
재귀를 이용한 간단한 순열 알고리즘 이 소스코드는 중복 요소도 허용한다. 중복 요소를 지우고 싶다면 erase, unique 함수를 이용하면 된다. 중복 요소 제거 방법에 대한 포스팅 링크도 첨부했다. kimcoder.tistory.com/100?category=887790 벡터 정렬 후, 중복 요소 제거하기 1. 필요 헤더 vector, algorithm 2. 필요 함수 sort : 범위 퀵 정렬 unique : 연속된 중복값을 맨 뒤로 보내고, 중복값이 시작되는 주소를 리턴한다. erase : 범위 모두 제거 3. 소스 코드 ※ unique 함수는 연속.. kimcoder.tistory.com 순열은 조합과 달리 요소의 순서가 중요할 경우 쓰인다. 순서까지 고려하여 1,2,3,4중 3개를 고르는 경우들이다. 경우의 수는 4P3=24이다.. 2020. 9. 22.
JSON의 정의와 그 사용법 1. JSON이란? JSON은 웹과 컴퓨터 프로그램에서 용량이 적은 데이터를 교환하기 위해 데이터 객체를 속성-값의 쌍 형태로 표현하는 형식으로, 이 형식은 사람과 기계에게 모두 쓰기 용이하다. JSON은 자바스크립트를 토대로 개발되었지만 언어로부터 독립적이며, C, C++, Java, Python, PHP 등 에서 JSON 형식으로 데이터를 주고 받는다. 단, 표기법은 자바스크립트 객체 표기법을 따른다. 특히 서버와 통신을 해야하는 작업에 매우 유용하다. 2. JSON의 구조 {"데이터 이름" : 값} 쌍으로 구성되어 있는 구조이다. 데이터 이름은 반드시 문자열 형식이어야 하며, 큰 따옴표를 사용해야 한다. 값으로는 숫자, 문자열, 불리언(boolean), 객체, 배열, null가 올 수 있다. 이미지.. 2020. 9. 19.
JavaScript와 php와의 통신 php와 통신할 XMLHttpRequest 객체 생성 및 동작 설정 var xhr = new XMLHttpRequest(); xhr.open('GET', 'uri'); xhr.onreadystatechange = function(){ //상태의 변화가 나타났을 시 함수 실행 if(xhr.readyState === 4 && xhr.status === 200){ //4=연결완료, 200=요청한 문서가 서버에 존재 // 동작 console.log(xhr.responseText); //php파일에서 php코드영역()의 echo값과 php코드영역 외의 내용을 반환 } }; xhr.send(); //GET 방식은 인자가 없다. 요청 방식별 send 함수의 형식 Get 방식 : send() 함수에는 인자가 들어가지 .. 2020. 9. 18.
삽입, 삭제 모두 O(logn)!! STL priority_queue 소개 priority_queue는 큐에 데이터가 삽입, 삭제 되어도 데이터들의 우선순위를 유지해주는 라이브러리이다. priority_queue는 힙 구조로 구현되므로 삽입과 삭제의 시간 복잡도는 O(logn) 밖에 되지 않는다. 프로그래머라면 O(n)과 O(logn)의 차이가 얼마나 큰지 알고 있을 것이다. 후자는 거의 상수 취급 하기도 할 정도로 시간복잡도를 매우 단축할 수 있다. 힙 구조에 대한 자세한 설명은 아래 링크를 보면 좋다. ko.wikipedia.org/wiki/%ED%9E%99_(%EC%9E%90%EB%A3%8C_%EA%B5%AC%EC%A1%B0) 힙 (자료 구조) - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 1부터 100까지의 정수를 저.. 2020. 9. 16.
스택/큐 고득점 kit 풀이 완료, 후기 스택은 데이터를 후입선출(LIFO) 구조를 유지하는 자료구조, 큐는 데이터를 선입선출(FIFO) 구조를 유지하는 자료구조이다. 이를 물론 배열/벡터와 인덱스 변수만으로 구현 할 수도 있다. 그리고 C++에서는 라이브러리를 제공한다. 데이터는 push함수로 넣고 pop함수로 뺄 수 있다. 스택과 큐 라이브러리는 빈 상태(empty) 여부를 판단하는 empty함수도 제공하고 스택의 front 함수, 큐의 top 함수로 가장 앞에 있는 데이터도 확인 할 수 있다. 이 라이브러리를 사용하여 코드도 줄이고 가독성도 올리는 것을 추천한다. 고득점 kit에 있는 스택/큐 문제들도 해결하기 까지 어느정도 생각이 필요했지만 전반적으로 어렵지 않게 풀 수 있었다. 문제모음 [난이도 하] 주식 가격 kimcoder.tist.. 2020. 9. 16.
[스택/큐, 난이도 하] 프로그래머즈, 주식가격 이 문제는 맞추고도 당황했다. prices의 길이는 최대 100000인데 prices의 길이에 대한 이중 반복문을 사용했는데 효율성까지도 만점을 받았다. 그래서 난이도를 '하' 로 정했다. 뒤의 요소들을 탐색하면서 시간을 계속 더해주되, 주식가격이 현재가격보다 아래가 되는 경우 바로 break를 해줘서 그런 것 같은데, 테스트 케이스들이 최악의 경우 까지는 고려를 안해서 그런 것 같다. prices의 길이가 100000이고, 주식 가격이 계속 오르기만 하는 경우에서 최악의 시간 복잡도가 나올 것이다. 현재의 주식 가격과 그 다음의 주식 가격의 관계만 신경 쓰면 되므로 이 문제에서 요구하는 것은 스택이라고 볼 수 있다. 벡터와 인덱스 변수만으로도 스택을 흉내낼 수 있기도 하고 벡터를 이용하는 것이 소스 코.. 2020. 9. 16.
[스택/큐, 난이도 중하] 프로그래머즈, 기능개발 먼저 배포되어야 하는 작업의 순서가 정해져 있는 것을 보아 큐를 이용하여 푸는 문제임을 알 수 있었다. 이번엔 큐 라이브러리를 이용하지 않고 현재 작업중인 작업 번호 변수를 만들어 큐의 역할을 흉내냈다. 큐를 이용한다면 입력 vector의 요소들을 큐에 모두 넣는 작업이 필요한데 굳이 그럴 필요까진 없었기 때문이다. 앞에 있는 task의 진도율이 100이 아닌 경우, 100이 나올 때 까지 계속해서 현재 진도율에 speed값을 더해준다. 반복할때마다 날짜는 1씩 더해준다. 그리고 앞에 있는 task의 진도율이 100을 달성 했을 경우, 한번에 배포할 수 있는 작업수와 작업 번호를 모두 1씩 증가시켜주면 된다. 그 뒤에 있는 task들에도 날짜와 speed를 곱한 값을 더해보고 진도율이 100을 달성 했을.. 2020. 9. 15.
[스택/큐, 난이도 중하] 프로그래머즈, 다리를 지나는 트럭 트럭은 1초에 최대 1번 다리에 들어올 수 있고, 최대 1번 나갈 수 있다. 즉 초를 세는 변수를 만들고, 반복문 안에 트럭이 다리에 들어오는 조건문과 나가는 조건문을 하나씩 세워주면 된다. 제일 앞에 있는 트럭의 입장 시각이 현재 시각에 다리의 길이를 뺀 값이 되면, 누적 무게에서 이 트럭의 무게를 빼고 queue에서 pop시켜주고 누적 무게에 가장 앞에 대기중인 트럭의 무게를 더해봐서, 제한 무게를 넘어가지 않는다면 queue에 push 해주면 된다. queue 안에 들어있는 pair 정보는 트럭의 무게와 입장 시각이다. 테스트 케이스 14개 모두 통과 #include #include using namespace std; int solution(int bridge_length, int weight, .. 2020. 9. 14.