분류 전체보기
백준 11328 cpp // tc문제는 visit을 초기화하라 , 카운팅 배열 동등비교시 +1 -1하고 값이 0이면 같은배열
https://www.acmicpc.net/problem/11328 11328번: Strfry C 언어 프로그래밍에서 문자열(string)은 native한 자료형이 아니다. 사실, 문자열은 그저, 문자열의 끝을 표시하기 위한 말단의 NULL이 사용된, 문자들로 이루어진 문자열일 뿐이다. 하지만 프로그래 www.acmicpc.net *의사코드 1. v1, v2에 알파벳 등장횟수저장 // v[a] == a 등장횟수 2. 모든값이 같으면 같은배열임 -> 순서바꿔서 같은 문자열로 만들수있음 -> Possible 3. else -> 불가능 * tc문제는 visit을 초기화하라 for (int i = 0; i < tc; ++i){ fill(v1,v1+26,0); fill(v2, v2 + 26, 0); * 카운팅 배..
백준 13300 방배정 cpp // visited배열활용 , 몇 묶음인지 구현하는법
https://www.acmicpc.net/problem/13300 13300번: 방 배정 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 수학여행에 참가하는 학생 수를 나타내는 정수 N(1 ≤ N ≤ 1,000)과 한 방에 배정할 수 있는 최대 인원 수 K(1 < K ≤ 1,000)가 공백으로 분리되어 www.acmicpc.net *의사코드 1. visiited에 [학년][성별]이 몇명인지 기록. for visitied : 학년별 성별인 사람숫자에서 각각 몇묶음인지 카운팅하면된다. ex) 6학년 남학생 : 7명 / k=3 3묶음(3+3+1) == 필요한 방의 갯수 * 몇 묶음인지 구현하는법 (뺄셈을 이용하면 된다.) int people = visited[i][j]; while (people / k..
백준 10807 개수 세기 // visited 배열이용한 풀이방법
https://www.acmicpc.net/problem/10807 10807번: 개수 세기 첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어져있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 정수와 v는 -100보다 크거 www.acmicpc.net *의사코드 입력받을때 visited[숫자] 를 카운팅한다. * 문제 : 입력 최악이 -100 => visited[-100] ?? 해결 : idx에 +100 && 출력할때도 idx+100으로 조회,출력 #include using namespace std; int n,v,visited[204]; vector vec; int main() { cin >> n; for (int i = 0; i..
백준 1158 cpp // 연결리스트 풀이, int_to_string(int), List.erase() 주의사항
https://www.acmicpc.net/problem/1158 1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net *의사코드 1. [1, 2, 3,4,5,6,7] List에 push 2. 2회(k-1)회 만큼 커서++ 3. 단, end이면 시작점으로 돌리기 *문제 : 밑에줄에 now=L.erase()가 문제였다. erase는 다음원소 idx를 반환 -> 끝숫자가 지워지면 now가 end포인터가됨 /* * 문제 : 에서 * 7이 지워지면 * now가 end가 됨. * 해결 : end이면 시작점으로 바꿔주기 */ if (now == L.end()) { now = L.begin(); } * 문제 2 : 문..
백준 5397 cpp// 연결리스트 메모장
https://www.acmicpc.net/problem/5397 5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입 www.acmicpc.net * 주의 L.insert에서는 cursor갱신 필요없다. 이유 : 에서 커서 이동을 처리하므로. #include using namespace std; int tc; list L; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> tc; while (tc--) { string s; cin >> s; auto ..
백준 1406 cpp // 연결리스트 사용법
https://www.acmicpc.net/problem/1406 1406번: 에디터 첫째 줄에는 초기에 편집기에 입력되어 있는 문자열이 주어진다. 이 문자열은 길이가 N이고, 영어 소문자로만 이루어져 있으며, 길이는 100,000을 넘지 않는다. 둘째 줄에는 입력할 명령어의 개수 www.acmicpc.net * 연결리스트 장점 : 삽입이 O(1) 이다. 단점 : 조회가 O(N)이다. 사용처 : 메모장 구현 등 삽입,삭제가 빈번할 때 코테키워드 : 메모장, 커서 *메소드 L.insert(idx,값) // 삽입한놈 idx 반환 L.erase(idx) // 삭제한 다음놈 idx 반환 L.end() // 마지막원소 다음 idx 반환 #include using namespace std; string s; int..
[맞음] 백준 3273 cpp // 두수의 차 visited 배열활용, 투포, 이분탐색
https://www.acmicpc.net/problem/3273 3273번: 두 수의 합n개의 서로 다른 양의 정수 a1, a2, ..., an으로 이루어진 수열이 있다. ai의 값은 1보다 크거나 같고, 1000000보다 작거나 같은 자연수이다. 자연수 x가 주어졌을 때, ai + aj = x (1 ≤ i www.acmicpc.net* 기본개념1. 목표가 100이고, 20이 현재값이면 visited[80]이 true -> 정답이 가능하다. * 에러out of bounds 원인 : visitied[x-v[i]]해결 : x가 최대 20만 이므로 visited도 20만으로 선언#include using namespace std;int n, x, visited[2000004], ret;vector v;int..
백준 1475 cpp // visit 배열활용
https://www.acmicpc.net/problem/1475 1475번: 방 번호 첫째 줄에 다솜이의 방 번호 N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다. www.acmicpc.net * 문풀 1. v[6] == 필요한 6의갯수 // 필요한갯수 기준으로 생각하라. 2. 단, 6은 9로 대체가능 ex) 669 의 필요한 세트수 : 2 == (v[6]+v[9])/2를 올림한 값 == (v[6]+v[9]+1)/2 3. 정답 : max(v[0-9] , (v[6]+v[9]+1)/2 )) #include using namespace std; int v[10]; string s; int ret; void print_v() { for (int i = 0; i < 10; ++i) { cout..