본문 바로가기

전체 글

(10)
132 효율적인 해킹 c++ (dfs/bfs) 문제 해커 김지민은 잘 알려진 어느 회사를 해킹하려고 한다. 이 회사는 N개의 컴퓨터로 이루어져 있다. 김지민은 귀찮기 때문에, 한 번의 해킹으로 여러 개의 컴퓨터를 해킹 할 수 있는 컴퓨터를 해킹하려고 한다. 이 회사의 컴퓨터는 신뢰하는 관계와, 신뢰하지 않는 관계로 이루어져 있는데, A가 B를 신뢰하는 경우에는 B를 해킹하면, A도 해킹할 수 있다는 소리다. 이 회사의 컴퓨터의 신뢰하는 관계가 주어졌을 때, 한 번에 가장 많은 컴퓨터를 해킹할 수 있는 컴퓨터의 번호를 출력하는 프로그램을 작성하시오. 입력 첫째 줄에, N과 M이 들어온다. N은 10,000보다 작거나 같은 자연수, M은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 M개의 줄에 신뢰하는 관계가 A B와 같은 형식으로 들어오며,..
백준 트럭주차요금 문제 2979 C++ https://www.acmicpc.net/problem/2979 2979번: 트럭 주차 첫째 줄에 문제에서 설명한 주차 요금 A, B, C가 주어진다. (1 ≤ C ≤ B ≤ A ≤ 100) 다음 세 개 줄에는 두 정수가 주어진다. 이 정수는 상근이가 가지고 있는 트럭이 주차장에 도착한 시간과 주차장 www.acmicpc.net 간단한설명 상근이는 트럭 3대가 있고 주차장에 각기 다른시간에 차를주차하고 나간다. 주차장은 주차된 차량의 수에 따라 각기 다른 요금을 받고있다. 예를들어 1시부터 3시사이에 차량을 2대 주차했으면 B만큼 3대 주차했으면 C만큼의 요금제로 계산된다. 상근이는 각기 다른시간에 차를 주차하고 나가니 겹치는시간을 카운팅해서 차량수에 맞는 주차비를 지불하면된다. 여담으로 나는 문제를 ..
백준 10808 알파벳개수 C++ https://www.acmicpc.net/problem/10808 알파벳의 개수를 구하는 알고리즘 문제다. 문자열을 받은 다음 문자열의 알파벳을 카운팅한거 세어준다. 카운팅된걸 배열로 받아주고 그다음 출력을 해주면 되는 간단한 문제이다. 물론 나는 문제푸는데 1시간넘게 걸렸따 ㅠㅠ 아직 실력도 부족하고 맞긴했지만 썩 이쁘지않은 코드다. 내가한코드와 큰돌님이 정답코드예제를 같이 올린다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 #include using namespace std; int a[26],cnt; string s; int main() { cin >> s; for(int i=0; i
백준 2559번 수열 C++로 구하기 feat 누적합 N개의 일수동안 온도를 재었다. K수의 온도값의 최대값을 구해야한다. 최대값을 구할떄는 기억해야할게있다. 1. 최대값을 구하기전에 최소값을 먼저구해야한다. 반대로 최소값을 구할때는최대값을 먼저구해야한다. 2. 정적배열에 데이터가 담기는것이다. 그러니 이때는 누적합이 생각이나야한다 prefix sum = psum! 그럼 바로 문제를 풀어보자 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 #include using namespace std; int n,k,v,psum[100004],ret = -10000004; int main() { cin >> n >> k; //누적합 for(int i = 1; i> v; psum[i] = psu..
소프트스킬 서평 벌말도서관에서 소프트스킬 책이 있어서 읽었다. 책은 프로그래밍(개발자의 일) 과 관련된 부분 뿐만아니라 금융,삶,인간관계,건강 등 많은 부분을 서술해두었다. 책제목만 봐서는 단순히 어떤 프로그래밍에 관련해서 자세하게 적어놓았을 줄 알았는데 그것과는 전혀 관련이 없었다. 이책은 개발자가 성장하는법, 그리고 금융에 관한 부분, 인간관계,건강,정신 에 대해서 자신이 읽었던 책을 추천하며 글을 적었다. 개발자가 성장하는법에서는 일단 처음으로 개발자가 되기로 한다면 어떤 개발자가 될지를 명확히 정하고 시작하는게 좋다고했다. 예를들어 단순히 개발자가 되겠다 보다는 안드로이드 개발자가 되겠다 이런식으로 시작하는게 훨씬 좋다고했다. 그렇게 해야만 공부할 게 정해지니 말이다. 그리고 이력서는 자기가 만드는것보다는 돈을 ..
C++ struct 구조체안에 매개변수 비교하기 #include using namespace std; struct Point { int y,x; }; bool cmp(Point & A, Point & B) { return A.x > B.x; }; vector v; int main() { for(int i =10; i >=1; i--) { v.push_back({i,10-i}); } sort(v.begin(),v.end(),cmp); for(auto it: v) cout
ios_base::sync_with_stdio(false) cin.tie(NULL); 알고리즘을 사용할떄 종종 쓰는 문장이다. ios_base::sync_with_stdio c의 stdio와 cpp의 iostream 을 동기화 시켜주는 역할을 한다. 이로인해서 c++와 c가 비동기화 됨으로써 사용하는 버퍼수가 줄어듭니다. 그만큼 속도가 빨라지기 때문에 해주는게 좋습니다. cin.tie(NULL) cin과 outd의 묶음을 풀어줍니다. 알고리즘에서 입력과 출력을 여러번 사용하는경우에는 필수적으로 풀어줘야합니다.
var 대신에 let,const를 사용하는이유 var의 문제점 1. 블록레벨 스코프가 되지않는다. 2. 변수 호이스팅이 일어난다. 3. 변수를 중복 선언할 수 있다. ES6에서 생긴 let과 const let 일반적으로 변수에 값을 재할당할때 이용할 수 있다. 블록레벨스코프가 된다. 블랙레벨스코프란 함수내부뿐만아니라 일반문에서도 지역스코프가 발생하는것을 말한다. 변수 호이스팅이 일어나지 않는다. 정확히 말하면 호이스팅이 일어나지않는것처럼 보이게 한다. const 재할당이 필요없는 상수의 값을 초기화 할때 사용한다. 선언과 초기화는 동시에 진행해야한다. 당연히 한번변경된 값은 바꿀 수 없다.(재할당금지) 다만 예외가 있는데 객체같은 경우에는 값을 변경 할 수 가 있다. 1 2 3 4 5 const somethingObj = {name:'mark', a..