분류 전체보기
-
[백준/BOJ] 9935번 : 문자열 폭발 _Python알고리즘/백준(BOJ) 2022. 3. 3. 18:37
9935번: 문자열 폭발 첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모 www.acmicpc.net >문제 >접근방법 insert나 replace를 이용하면 시간초과가 나온다. 대신 스택을 이용해서 한 글자씩 스택에 넣고 폭발문자열이 있으면 pop을 해주는 방식으로 푼다. >풀이법 1. 입력받은 문자열을 스택에 하나씩 append 할때마다 폭발문자열과 비교한다. 2. 폭발 문자열의 길이만큼 스택의 크기가 길어지면 3. 스택과 폭발문자열 각각 끝부분부터 비교한다. 4. 폭발문자열의 길이만큼 전부 같으면 그 길이만큼 pop 해준다. (폭발 문자열 ..
-
[백준/BOJ] 5397번 : 키로거 _Python알고리즘/백준(BOJ) 2022. 3. 1. 23:58
5397번: 키로거 첫째 줄에 테스트 케이스의 개수가 주어진다. 각 테스트 케이스는 한줄로 이루어져 있고, 강산이가 입력한 순서대로 길이가 L인 문자열이 주어진다. (1 ≤ L ≤ 1,000,000) 강산이가 백스페이스를 입 www.acmicpc.net >문제 >접근방법 (삽질ver) cursor 위치를 나타내는 변수로 새 리스트에 insert(cursor, pw[i]) 하기 => list.insert의 시간복잡도때문에 시간초과가 뜬다. (제출ver) 리스트 두개를 만들고 사이에 커서를 둔다. 를 입력받으면 오른쪽 리스트의 끝 문자를 왼쪽 리스트에 append한다. >풀이법 1. 왼쪽과 오른쪽 두 개의 리스트를 만든다. 2. 입력받은 문자열의 요소가 < 이면 왼쪽 리스트의 마지막 요소를 오른쪽 리스트에 ..
-
[정보처리기사] 2장 소프트웨어 개발 : 3장. 소프트웨어 패키징정보처리기사 2022. 2. 28. 19:45
1. 소프트웨어 패키징 2. 릴리즈 노트 작성 3. 디지털 저작권 관리(DRM) *** 4. 소프트웨어 설치 매뉴얼 작성 5. 소프트웨어 사용자 매뉴얼 작성 6. 소프트웨어 버전 등록 7. 소프트웨어 버전 관리 도구 *** 8. 빌드 자동화 도구 1. 소프트웨어 패키징 소프트웨어 패키징의 개요 - 모듈별로 생성한 실행 파일들을 묶어 배포용 설치 파일을 만드는 것 - 개발자가 아닌 사용자 중심으로 진행 - 소스 코드는 향후 관리를 고려하여 모듈화하여 패키징 - 사용자가 소프트웨어를 사용하게 될 환경을 이해하여, 다양한 환경에서 소프트웨어를 손쉽게 사용할 수 있도록 일반적인 배포 형태로 패키징 - 사용자 중심으로 진행되는 작업이므로 사용자의 편의성 및 실행 환경을 우선적으로 고려해야 함 패키징 시 고려사..
-
[정보처리기사] 2장 소프트웨어 개발 : 2장. 통합 구현정보처리기사 2022. 2. 28. 19:17
1. 단위 모듈 구현 2. 단위 모듈 테스트 3. 개발 지원 도구 1. 단위 모듈 구현 단위 모듈의 개요 - 소프트웨어 구현에 필요한 여러 동작 중 한 가지 동작을 수행하는 기능을 모듈로 구현한 것 - 사용자나 다른 모듈로부터 값을 전달받아 시작되는 작은 프로그램을 의미 - 단위 모듈의 구성요소: 처리문, 명령문, 데이터 구조 - 독립적인 컴파일이 가능하며, 다른 모듈에 호출되거나 삽압되기도 함 1) 단위 기능 명세서 작성 - 설계 과정에서 작성하는 기능 및 코드 명세서나 설계 지침과 같이 단위 기능을 명세화한 문서 - 복잡한 시스템을 단순하게 구현하기 위한 추상화 작업이 필요 - 대형 시스템을 분해하여 단위 기능별로 구분하고, 각 기능들을 계층적으로 구성하는 구조화 과정을 거침 - 모듈의 독립적인 운용..
-
[정보처리기사] 2과목 소프트웨어 개발 : 1장. 데이터 입출력 구현정보처리기사 2022. 2. 28. 19:04
1. 자료 구조 *** 2. 데이터저장소 / 데이터베이스 / DBMS *** 3. 데이터 입출력 4. 절차형 SQL 1. 자료 구조 *** 자료 구조의 정의 - 프로그램에서 사용하기 위한 자료를 기억장치의 공간 내에 저장하는 방법과 저장된 그룹 내에 존재하는 자료 간의 관계, 처리 방법 등을 연구 분석하는 것 - 일련의 자료들을 조직하고 구조화하는 것 - 어떠한 자료 구조에서도 필요한 모든 연산들을 처리할 수 있음 자료 구조의 분류 1) 배열 - 동일한 자료형의 데이터들이 같은 크기로 나열되어 순서를 가지고 있는 집합 - 정적인 자료구조로 기억장소의 추가가 어렵고, 데이터 삭제 시 데이터가 저장되어 있던 기억장소는 빈 공간으로 남아있어 메모리의 낭비가 발생 - 반복적인 데이터 처리 작업에 적합 - 데..
-
[백준/BOJ] 10799번 : 쇠막대기 _Python알고리즘/백준(BOJ) 2022. 2. 28. 02:56
10799번: 쇠막대기 여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저 www.acmicpc.net >문제 >접근방법 레이저를 만나면 조각 개수는 막대 하나 당 '레이저개수+1' 개 가 된다. 막대기의 개수를 확인하려면 스택을 쓰는게 편하겠다. >알고리즘 1. 스택으로 사용할 s[] 리스트를 만든다. 2. 리스트 ch[]에 괄호들을 입력받는다. 3. ( 만나면 s에 append 한다. 4. 레이저 () 를 만나면 s에 있는 ( 의 개수(s의 길이)를 sum에 더한다. 5. ) 만나면 sum에 1 더하고 pop 시킨다. 이때 )가 레이저()의 ) 일수도 있기 때문에 )를 만..
-
[백준/BOJ] 3986번 : 좋은 단어 _Python알고리즘/백준(BOJ) 2022. 2. 26. 22:14
3986번: 좋은 단어 이번 계절학기에 심리학 개론을 수강 중인 평석이는 오늘 자정까지 보고서를 제출해야 한다. 보고서 작성이 너무 지루했던 평석이는 노트북에 엎드려서 꾸벅꾸벅 졸다가 제출 마감 1시간 전에 www.acmicpc.net >문제 >접근방법 스택 개념을 쓰면 될 것 같다. 만나는 글자와 top(파이썬의 경우, list[-1])을 비교해보고 같으면 pop, 다르면 append >알고리즘 1. 입력 문자열 개수만큼 첫 번째 for문 반복 2. 문자열을 리스트 word[]에 입력받는다. 3. 입력받은 문자열 길이만큼 두 번째 for문 반복 4. 리스트가 비어있으면 word[j]를 stack[]에 append한다. 5. stack[]의 끝값(마지막에 넣은 값)과 word[j]을 비교해보고 같으면 p..
-
[백준/BOJ] 10773번 : 제로 _Python알고리즘/백준(BOJ) 2022. 2. 26. 01:11
10773번: 제로 첫 번째 줄에 정수 K가 주어진다. (1 ≤ K ≤ 100,000) 이후 K개의 줄에 정수가 1개씩 주어진다. 정수는 0에서 1,000,000 사이의 값을 가지며, 정수가 "0" 일 경우에는 가장 최근에 쓴 수를 지우고, 아닐 경 www.acmicpc.net >문제 >접근방법 리스트에 입력받고 0이 나올때마다 pop시키면 되겠다. >알고리즘 1. 입력 문자열 개수만큼 첫 번째 for문 반복한다. 2. for문1 : 입력된 숫자가 0일 경우 pop, 0이 아닐 경우 append() 한다. 3. for문2 : 남아있는 숫자 sum에 합산한다. (이때 스택의 stack.top() 개념은 list[-1]로 사용한다.) >코드 n = int(input()) stack = [] sum = 0 #..