전체 글 259

백준 10219 - meats on the grill : reverse함수 등

https://www.acmicpc.net/problem/10219 10219번: Meats On The Grill 각 테스트 케이스마다 각 고기덩이를 뒤집은 후의 불판의 상태를 H줄에 걸쳐서 출력한다. 각 줄에는 W개의 문자가 있어야 하며, 입력에서 주어진 각 고기 덩이가 뒤집힌 채로 있어야 한다. 이를 만족하는 어느 답을 출력해도 정답으로 인정한다. www.acmicpc.net 문제 abbb aabb aa.. 이런식으로 고기 모양이 주어지는데, 같은 영어 소문자는 고기 한덩이다. 이 고기들을 90도/180도/270도/반전 하여 겹치지 않게 주어진 그리드 안에서(h*w) 고기를 뒤집는 것 => 고기 한덩이가 붙어 있도록 회전 or 반전 시키면 됨 reverse() #include int a[5] = {..

3) 알고리즘 : 정렬 - 삽입정렬(Insertion Sort)

삽입정렬 - 적절한 위치에 삽입 하는 것 - 처음부터 왼쪽에 있는 원소와 비교해서 해당 원소가 비교값보다 작다면 왼쪽으로 이동하는 식으로 더 큰 수를 만날때까지 반복해준다. - 항상 왼쪽에 있는 것은 정렬되어 있다고 가정되어 있음. 즉, 멈출 코드를 알고 있다는 것. (왼쪽의 원소값보다 해당값이 크면 멈추면 된다.) - 시간 복잡도(Big O) : 10 + 9 + 8 + 7 ... + 1 => O(N^2) - Big O는 선택/버블과 같지만 실제로는 선택/버블/삽입 중에서는 삽입이 제일 연산이 적다. - 거의 정렬된 상태의 정렬을 삽입 정렬로 한다. => 삽입 정렬이 굉장히 빨라짐 // 삽입정렬 insertion sort #include using namespace std; int main(void) {..

백준 3052 - 나머지 : [c++ STL] set 이용

- 입력받을 배열을 공간을 선언한다. - 입력받은 배열을 for문을 통해서 %42 해준다. - %42한 값은 set container에 넣어준다. 이때, set container는 중복 값을 받지 않기 때문에 나머지 중 같은 수는(이미 담긴 수) 제외되고 담긴다 - set container의 size를 구하면 담긴 원소 개수를 알 수 있다. => 10개의 값을 각 %42를 한 후, 나머지 값들 중 중복을 제외한 서로 다른 값의 나머지 개수만 구하기 // BJ 3052 #include #include using namespace std; int main(void) { int array[10]; int count = 0; for (int i = 0; i > array[i]; ..

2) 알고리즘 : 정렬 - 버블정렬(Bubble Sort)

버블 정렬 - 당장 옆에 값과 비교 - 1회차가 끝나면 가장 큰수가 가장 뒤에 정렬돼있다. 5 3 4 1 2 6 1회차 3 5 4 1 2 6 3 4 5 1 2 6 3 4 1 5 2 6 3 4 1 2 5 6 3 4 1 2 5 6 2회차 - 맨 뒤에 정렬된 6 제외한 나머지 앞 5개의 수만 비교 => 6 + 5 + 4 + 3 + 2 + 1 (등차수열) => n*(n-1) / 2 (컴퓨터에서는 가장 큰 차수만 보기 때문에 -1 과 /2 제거) => n*n => 시간 복잡도 ? 데이터가 N개 일때 총 몇 번의 비교 연산을 하는가 시간복잡도 빅오 : O(N^2) 데이터가 10000개면 약 1억번 계산해야하는 비효율적인 알고리즘 *시간복잡도는 선택정렬과 같지만, 실제 수행 시간은 버블정렬이 더 느리다. 매번 바로 ..

1) 알고리즘 : 정렬 - 선택정렬(selection sort)

- 선택정렬 : 전체 배열 중 가장 작은 것을 선택해서 맨 앞으로 보내는 것 (맨 앞에 숫자는 제일 작은 것에 있던 숫자의 자리로 값을 스와핑한다.) 5 2 6 1 3 4 1 2 6 5 3 4 1 2 6 5 3 4 1 2 3 5 6 4 1 2 3 4 6 5 1 2 3 4 5 6 - 1회차 : 6번 비교 - 2회차 : 5번 비교 - 3회차 : 4번 비교 ... => 6 + 5 + 4 + 3 + 2 + 1 (등차수열) => n*(n-1) / 2 (컴퓨터에서는 가장 큰 차수만 보기 때문에 -1 과 /2 제거) => n*n => 시간 복잡도 ? 데이터가 N개 일때 총 몇 번의 비교 연산을 하는가 시간복잡도 빅오 : O(N^2) 데이터가 10000개면 약 1억번 계산해야하는 비효율적인 알고리즘 //선택정렬 Sel..

[알고리즘 공부 계획] + 백준 5598 - OX퀴즈 풀이

어제부로 정보처리기사 실기 시험도 끝나서 알고리즘 공부를 다시 시작했다. 다행히 실기는 가채점 결과 통과했다.. ㅎㄷㄷ 2년 전 합격률 11% 일 때 실기를 봤는데 너무 어려워서 탈락했다. 매번 50~60%대의 합격률이 나오던 시험이 갑자기 내가 응시하는 시점에 주관식으로 바뀌고 출제 기관에서 난이도 조절에 실패해서 합격률이 11%대로 떨어지다니 운도 지지리도 없다고 생각했다. 하지만 사실 제대로 공부안한 나의 탓이 크다. 10명 중 1명꼴로 합격한 사람이 있으니.. 어쨌든 이번에 통과해서 정... 말 다행이다. ^^ 이번에 통과를 못했으면 다시 필기부터 봐야 했으니깐... 그리고 이번에 재시를 하면서 전공기초 공부를 다시 할 수 있어서 좋은 기회였다고 생각한다. 공부할때는 깊이는 없지만 방대한 양(신기..

다이나믹 프로그래밍 DP 동적계획법

- 하나의 문제는 단 한번만 풀도록 하는 알고리즘 - 이미 해결한 문제를 반복 계산하는 것을 막아 효율적으로 만드는 것 - 한번 계산한 결과를 "메모이제이션"을 활용해서 배열에 저장 #include using namespace std; int d[100]; int fibonacci(int x) { if (x == 1) return 1; if (x == 2) return 1; if (d[x] != 0) return d[x]; return d[x] = fibonacci(x - 1) + fibonacci(x - 2); } int main(void) { cout

[정보처리기사실기] 3과목 - 업무 프로세스 기출요약정리

악필이라 블로그에 타자로 치며 정보처리기사 3과목 업무 프로세스 부분을 요약정리합니다. 정리는 기출된 내용 중심이며, 해당 과목은 개념을 알려주고 단어를 맞추라는 주관식으로 많이 출제되는 암기과목이기에 내용을 요약하며 공부할 예정입니다. CFS(Critical Success Factor, 핵심성공 요소) : MIT 경영 대학원에서 개발한 전략 정보시스템 실현을 위한 기법의 하나로, 성공에 불가결한 요인을 찾아내어 경영상 중요한 정보를 결정하는 방법 5-FORCE 분석 : 마이클포터가 주장, 기업에 미치는 외부 5가지 요인인 신규 진입자의 위협, 기존 업계 경쟁, 공급자의 교섭력, 구매자의 교섭력, 대체품의 위협을 분석하여 그 기업과 기업을 둘러싼 환경을 연결시키는데 본질적 의미 가짐 (경쟁 환경 분석 도..

자격증 2019.06.19

[C++] 벡터 사용법 / 깊이우선탐색 DFS

- C++의 벡터는 동적 배열구조 클래스 - 자동으로 배열의 크기 조절과 추가 삭제 가능 - 모든 자료형에 대해 배열처럼 저장 가능 But 한번에 한 타입만 저장 가능 - 자바 벡터처럼 배열 크기 추가할 때, 기존 배열 크기의 100% 늘어남 vector integer_vector; vector double_vector; vector char_vector; - 벡터의 기본 함수 //iterator 반복자 begin() //beginning iterator 반환 end() //end iterato 반환 //추가 및 삭제 push_back(element) //벡터 제일 끝에 원소 추가 pop_back() //벡터 제일 끝 원소 삭제 //조회 [i] //i번째 원소 반환 at(i) //i번째 원소 반환 fro..