BOJ6 BOJ 백준 11557 c++ YangJoJang of the Year. (vector pair 제한시간 1초. 학교 숫자 최대 100개 & 각 학교 최대 20개. 이중 for 문을 써도 제한시간에 문제가 없다,. 이러한 문제에서는 vector pair을 이용하면 어떨까요? 간단하게 pair는 뭐냐면, 두 데이터를 하나로 묶는거에요. 자동차와 차키의 관계처럼. 그러면! 학교 이름과 그 학교가 얼마나 술을 마셨는지를 엮어서 벡터에 차곡차곡 쌓고 술 마신 양으로 sorting해서 해당 학교를 찾아낼 수 있지요, vector vv; vv라고 선언을 해주고! vv.push_back(make_pair(a,b)); 이렇게 차곡차곡 make_pair()로 값을 묶어서 벡터에 집어넣으면 돼요! 자 하나 고려할게,, 벡터에 넣었고? 그담에 pair중 b위치에 해당하는 값으로 sorting하는데 어떻게 하냐?? 함수.. 2023. 8. 20. [C++] 백준 11659번 구간합 구하기 4 문제를 딱 보고 아! 3분컷문제다 했는데 실버여서 의심은했지만 역시나.... 시간제한에 걸려버렸습니다.. M개를 반복하면서 그때마다 i, j를 정해줘야하는데 최대 시간이 O(M*N)이 되어버리는데 이는 케이스에 따라서 제한시간 1초를 넘기기에 충분한 시간입니다. 아무리 머리를 써보아도 반복문중첩이외에는 좋은생각이 떠오르지 않았는데 prefix sum을 이용하는 방법이 있다고 하네요. 구간합에 이용되는데 sum을 이런식으로 초기화해주면 각 배열엔 그전까지의 원소들의 합이 다 더해진느낌이 됩니다. 고교수학때 씨그마 배운거랑 같은느낌이군요. Sn - S(n-1) = an 인걸 우린 알고있죠. 그걸 이용해서 시간을 줄여볼에요.!!!!!! 수학이 중요하다고 하는데에는 이유가 있음을 인정하는 부분이 여기서 .. 2022. 8. 15. [C++] 백준 17210번 문문문 규칙 2,3, 4번을 보면 모순이 있음을 알 수 있습니다. 만약 문의개수가 6개 이상이라면 먼저 두번째 문을 밀어서 열었다고 가정해보지요? 그럼 3번째 문은 반드시 (규칙2번에의해) 당겨야 할것입니다. 그럼 규칙 4번에 의해 6번째 문도 당겨야할것인데 2번째문을 밀었으면 6번째문도 밀어야합니다. 그럼 여기서 알 수 있는것이 문의 개수가 6개이상이면 무조건!! 무조건!! 탈출불가능한것이됩니다. #include using namespace std; int main(){ int n; cin >> n; int first; cin >> first; int a[5]= {0,}; if(n > 5){ cout 2022. 8. 15. [C++] 백준 2010번 플러그 문제를보면 콘센트구멍은 한개뿐이고 결국 멀티탭이 거기에 연결되어야한다. 그럼 계산해보면 멀티탭끼리 연결을 하기에 멀티탭이 3개가있다면? 멀티탭 전체구멍에서 (3-1 = 2) 만큼을 빼주면 된다. 그렇다면 멀티탭 구멍개수 다 더한뒤 n개의 멀티탭이있으니 전체더한것에서 n -1 을 빼면 되겠다!? (천천히 생각해보자) 2022. 8. 15. [C++] 백준 2577번 숫자의 개수 처음 문제보고 너무 걱정했던건 메모리 범위를 초과하면 어쩌지.였었다. 아직 비트연산자를 잘 모르기때문에 걱정했으나 int값으로 충분히 커버 가능했다. 그럼 쫄거없이 곱한수를 할당하고 걔를 끝에자리수부터 하나씩 받아서 각 자리수 개수를 카운트하는것이다. 12~16 코드가 그 역할을 한다. 15번 줄의 조건은 14번 줄을 거쳐서 마지막 한자리수만 남았을때 더이상 나머지로 볼것도 없이 그냥 끝내면 되고 그때 끝내는 조건을 넣기 좋아서 저렇게 코드를 짰다. 점점 코드작성의 자유도가 높아지는 기분이다. |^^/ 2022. 8. 15. [C++] 백준 4344번 평균은 넘겠지 관건은, 나는 c++을 쓸건데 소숫점 셋째자리에서 끊을수있냐..? -> solution!! 자 그럼. 평균을 구하는건 쉬우니까 평균구하고나서 그걸 넘는사람의 비율을 구해보자. 넘는사람수/전체수 이렇게 하면 될것이다. 런타임에러떴다. 딱봐도 배열범위초과인거같은데 그럴가능성이 있는건 b밖에없다. 문제는 b동적할당의 n이 반복할때마다 달라진다는것. 그럼 반복할때마다 새로 동적할당 선언해준다면?!? 그래서 13번줄을 15번줄 뒤에 놓아보았다. 이랬더니 해결. 문제는 소숫점 자릿수였다. precision(); 함수안에 들어가는건 정수부분의 숫자까지도 합친숫자가 들어간다. 그렇다면 소숫점 자리를 설정하기위해 이렇게 설정한다. 24번줄 n이 for문 조건때문에 정수여야만 한다. 고로 24번줄에 typeca.. 2022. 8. 15. 이전 1 다음