
https://www.acmicpc.net/problem/10814 10814번: 나이순 정렬 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 www.acmicpc.net 이거. 살짝 당황했다. 문제 이해부터 들어가고 다른 분의 코드 해석도 알려주겠다. 나는 많이 다르게 했다. 그러니까 문제를 보면. 나이순으로 정렬은 하되, 먼저 입력된 회원이 먼저 출력이 되어야 한다. 그러니까 같은 나이끼리는 순서가 변경 될 필요가 없다는 것이다. 나는 그래서 정렬을 하는 동시에 만약 왼쪽에 있는 요소와 오른쪽에 있는 요소를 비교할 때, 같은 수가 있다면 왼쪽에 있는 요소가 더 우선순..
https://www.acmicpc.net/problem/11653 11653번: 소인수분해 첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다. www.acmicpc.net 조금의 미쓰? 아닌 미쓰가 있어서 작성합니다 우선 코드부터 보여드리겠습니다. #include int main(void){ int N; scanf("%d", &N); int i = 2; while(N > 1){ if(i*i > N) break; if(N % i == 0){ printf("%d\n", i); N /= i; } else{ if(i == 2) i++; else i += 2; } } if(N > 1) printf("%d", N); } 대충 하는 방법은 알것이라 생각합니다. 자세한 설명은 생략하고 무엇때문이냐면..
https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. www.acmicpc.net 엄~첨 쉽다. 근데 sort함수를 사용하는 중간에 compare함수를 인자로 주어 정렬을 내가 원하는 대로 할 수 있는 방법이 있다. 하지만, 이것을 작성하는 중간에 헷갈리는 요소가 있어 틀렸다.. 이런 실수가 다시는 발생하지 않도록 하기 위해 글을 작성한다. 우선 코드부터 소개하겠다. sort함수에 대해 알고 싶은 사람은 다음 글을 참고하..
https://www.acmicpc.net/submit/11866/45301836 로그인 www.acmicpc.net 문제 접근은 쉽게 하였다. 하지만, 내가 푼 방식과 다르게 풀 수 있는 방법이 알고리즘 분류에 소개되어 있어 두 가지의 방법을 소개하려 한다. 1. 리스트 2. 큐 1번부터 알아보자. 리스트로 어떻게? 바로 iterator를 이용하는 것이다. 리스트에 대한 개념이 잡혀있지 않다면 다음 글을 보고 오자. https://jhcard.tistory.com/14 [C++] List 라이브러리 List 라이브러리 - 노드를 통해 만들어진 자료구조이다. 이전에 말했던 vector처럼 배열 구조라고 말하기에는 힘들다. 노드라는 하나의 구조체(클래스)를 생성하여 서로 연결시키는 관계이기 때문 jhcar..
https://www.acmicpc.net/problem/1676 1676번: 팩토리얼 0의 개수 N!에서 뒤에서부터 처음 0이 아닌 숫자가 나올 때까지 0의 개수를 구하는 프로그램을 작성하시오. www.acmicpc.net 문제는 쉽게 풀었지만, 다른 분의 코드를 보고 이렇게도 되네? 해서 올린다. 우선 문제 접근 방법부터 알아보자. 우리는 0의 개수만 알면 된다. 즉, 10이 몇번 곱해졌는지만 알면 된다. 10은 무엇으로 이루어져 있는가? 2와 5로 이루어져 있다. 그러니까 N이하의 값 중 2와 5로 곱해져 있는 수의 2와 5의 수를 구하면 되는 것이다. 그렇게 해서 작성한 코드는 다음과 같다. #include #include int main(void) { int fact; std::cin >> fa..
https://www.acmicpc.net/problem/10815 10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 내가 접근 한 방법과 다른 방법도 존재하고, 좀 당황해서 적습니다. 처음에 문제를 확인하고, 한 자료구조에 입력된 값들을 전부 저장하고, 값이 있는지 없는지 빨리 확인할 수 있는 자료구조를 선택했습니다. 그러니까 삽입과 검색이 빠른 자료구조 즉, 삽입과 검색이 O(1)에 가능한 자료구조. 예전에 자료구조 강의를 들으면서 알고있는 지식으로 풀려고 하였습니다. 그 자료구..
https://www.acmicpc.net/problem/1094 1094번: 막대기 지민이는 길이가 64cm인 막대를 가지고 있다. 어느 날, 그는 길이가 Xcm인 막대가 가지고 싶어졌다. 지민이는 원래 가지고 있던 막대를 더 작은 막대로 자른다음에, 풀로 붙여서 길이가 Xcm인 막대 www.acmicpc.net 짱이다. 비트마스킹 알고리즘의 기초 문제라고 볼 수 있다. 지림.. 비트마스킹의 글을 참고하면 더욱 도움 될 것이다. https://jhcard.tistory.com/81 [알고리즘] 비트마스킹 1. 비트마스킹. 비트를 이용한 연산 / 자료구조라 생각하면 된다. 자료구조라고 말하지만, 그냥 비트를 이용하여 한 상태를 나타낸다고 생각하면 된다. 예를 들어 다음과 같은 상황이 있다고 하 jhcar..
https://www.acmicpc.net/problem/11723 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 이 문제는 두가지 방법으로 해결하였다. 첫번째는 문제 이름이 집합이길래 set으로 풀었다. 하지만, set보다 더 간편한 방법이 있었다. 어렵지만 쉬운 방법이다. 사실은 문제를 해결하고 나서 알고리즘 분류를 확인해보았는데, 당연히 set자료구조 일줄 알았지만, 처음보는 생소한 단어가 나를 맞이했다. 비트마스킹이라고 나와있었다. 검색을 해보니 집합을 비트로 표현할 수 있는 방법이 있었다. 예전에 자료구조 강의에서 비트맵이라고 주워들은..
- Total
- Today
- Yesterday
- deque와 vector의 차이
- 큰 수 계산
- list
- unistd.h
- writeString
- Set
- readString
- 에라토스테네스의 체
- manber myers
- 해시맵
- SCC 알고리즘
- 좌표 압축 알고리즘
- 피보나치
- scanf
- readInt
- bits/stdc++.h
- 트리보나치
- 확장 유클리드
- Witcher3
- 비트마스킹
- 분할정복
- portal1
- tsp알고리즘
- 플로이드-워셜
- fread
- fastIo
- cin.tie(nullptr);
- writeInt
- 행렬 멱법
- ios::sync_with_stdio(false)
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |