분류 전체보기 26

정보처리기사 필기 공부하기 - [2과목] 소프트웨어 개발

단위 테스트 테스트 스텁 - 하향식 테스트 제어 모듈이 호출하는 타 모듈의 기능을 단순히 수행하는 도구 일시적으로 필요한 조건만을 가지고 있는 테스트용 모듈 테스트 드라이버 - 상향식 테스트의 가상 모듈 테스트의 대상이 되는 하위 모듈 호출, 파라미터 전달 테스트 슈트 - 테스트 대상 컴포넌트나 모듈, 시스템에 사용되는 테스트 케이스의 집합 테스트 케이스 - 사용자의 요구사항을 정확히 준수했는지 확인하기 위한 입력 값, 실행조건, 기대결과 등으로 만들어진 테스트 항목의 명세서 코드 품질 향상 기법 (코드 리뷰) 코드 인스펙션 - 정형화된 패턴의 기법 - 4역할 - Moderator, Reader, Designer/Coder, Tester - 6단계 - Planning, Overview, Preparati..

공부 2023.07.08

정보처리기사 필기 공부하기 - [1과목] 소프트웨어 설계

객체지향기법 추상화 : 데이터들의 공통된 성질을 추출해 슈퍼 클래스 선정 다형성 : 각 객체의 고유한 방법으로 응답, 하나의 클래스 혹은 메서드가 다양한 방식으로 동작이 가능. - 오버로딩 - 오버라이딩 캡슐화 - 오류의 파급 효과가 적음 - 재사용 용이 - 인터페이스가 단순해짐 - 객체 간 결합도 낮아짐 상속성 : 상위 클래스의 메소드와 속성을 물려받는 것 설계 기법 (통합 테스트) 하향식 설계 : 주요 제어 모듈의 종속 모듈을 스텁으로 대체 → 한 번에 하나씩 실제 모듈로 교체 → 모듈이 통합될 때마다 테스트 실시 → 회귀 테스트 - 깊이 우선, 넓이 우선 통합법 사용 - 테스트 초기부터 사용자에게 시스템 구조를 보여줄 수 있음 - 상위 모듈에서는 tc 사용 X 상향식 설계 : 클러스터로 결합 → 드..

공부 2023.07.08

[BOJ] 9466. 텀 프로젝트 / DFS / Python 풀이

몇 달 전부터 친구랑 같이 문제를 정해서 함께 풀고 있다. 이번에는 친구가 먼저 풀어봤는데 꽤 어려웠다는 문제를 풀어보기로 했다. 9466번: 텀 프로젝트 이번 가을학기에 '문제 해결' 강의를 신청한 학생들은 텀 프로젝트를 수행해야 한다. 프로젝트 팀원 수에는 제한이 없다. 심지어 모든 학생들이 동일한 팀의 팀원인 경우와 같이 한 팀만 있을 www.acmicpc.net 백준 9466번 문제로 레벨 골드3에 걸맞는 정답률을 자랑하고 있다. 정답 비율이 23퍼센트밖에 되지 않아서 겁을 먹었지만 풀고 나니 처참한 비율의 이유를 알게 되었다.. 알고 싶지 않았다 문제 이해 문제 설명이 말로 되어 있어서 처음에 이해하기가 어려웠다. 설명을 여러 번 읽어본 후에야 이해할 수 있었는데, 결국은 싸이클이 성립될 때 팀..

알고리즘 2023.06.11

[BOJ] 2636. 치즈 / BFS / Python 풀이

2636번: 치즈 첫째 줄에는 사각형 모양 판의 세로와 가로의 길이가 양의 정수로 주어진다. 세로와 가로의 길이는 최대 100이다. 판의 각 가로줄의 모양이 윗 줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진 www.acmicpc.net 오랜만에 포스팅, 최근 풀고 있는 BFS 문제다. 백준 2636번 문제로 골드4인데 정답률은 50퍼센트를 넘는다.. 친구와 함께 풀다가 몇 가지 힌트를 얻고 한 번에 통과했다 ㅎㅎ 문제 이해 공기와 접촉된 칸은 한 시간이 되면 녹아 없어진다. 이때 치즈로 둘러싸인 구멍은 공기와 접촉된 것으로 치지 않는다. 이 부분의 설명이 이해하기 쉽지 않아서 주춤했다. 접근 문제를 보자마자 너비 우선 탐색으로 접근했고, 처음에는 공기와 닿은 치즈를 어떻게 알아낼지가 고민이었다. 문제 ..

알고리즘 2023.06.02

[BOJ] 2798. 블랙잭 / Brute Force / Python 풀이

얼마 전 PS 공부를 다시 시작했다. 참고할 풀이가 많은 백준으로 선택했고, 분류별, 단계별로 문제를 풀어보려고 한다. 시작으로 브루트포스 문제들을 먼저 풀어보고 있다. 처음 풀어 본 문제는 브론즈 2 난이도의 2798번 블랙잭 문제이다. 2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 먼저 문제를 살펴보자. 주어진 N장의 카드 중 3장을 골라 M 미만의 가장 큰 3장의 합을 구하면 된다. 입력과 출력은 다음과 같다. 먼저 정수 N, M을 받고, N장의 카드에 각각 어떤 수가 ..

알고리즘 2023.04.19

[BOJ] 11726. 2xn 타일링 / 파이썬 풀이

11726번: 2×n 타일링 2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다. www.acmicpc.net n = int(input()) t = [0 for i in range(n+1)] t[1] = 1 t[2] = 2 for i in range(3, n+1): t[i] = t[i-1] + t[i-2] print(t[n]%10007) 런타임 에러 (IndexError) n=1일 때 IndexError: list assignment index out of range 바로 다음 문제도 풀어보기 11727번: 2×n 타일링 2 2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를..

알고리즘 2022.02.24

[BOJ] 1003. 피보나치 함수 / 파이썬 풀이

https://www.acmicpc.net/problem/1003 1003번: 피보나치 함수 각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다. www.acmicpc.net def fib(n): p = [] num_0 = [0 for i in range(n+2)] num_1 = [0 for i in range(n+2)] p.append(0) num_0[0] = 1 p.append(1) num_1[1] = 1 for i in range(2, n+1): p.append(p[i-1] + p[i-2]) num_0[i] = num_0[i-1] + num_0[i-2] num_1[i] = num_1[i-1] + num_1[i-2] print(num_0[n], num_1[n])..

알고리즘 2022.02.07

[BOJ] 10826. 피보나치 수 4 / 파이썬 풀이

https://www.acmicpc.net/problem/10826 10826번: 피보나치 수 4 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net def fib(n): if(n==0): return 0 elif(n==1): return 1 else: return fib(n-1) + fib(n-2) n = int(input()) print(fib(n)) 런타임 에러 (RecursionError) / 시간초과 def fib(n): p = [] p.append(0) p.append(1) for i in ra..

알고리즘 2022.02.07