전체 글 607

[프로그래머스] 할인 행사

# 완성될 값인 result_dict와 해당 길이의 개수만큼 채워진 want_dict와 비교 # try except를 사용해 만약 except로 갈 경우 # result_dict와 깉지 않아 더이상 조회할 필요가 없기에 break def solution(want, number, discount): result_dict, _range, result = {i:j for i,j in zip(want, number)}, sum(number), 0 for i in range(len(discount)-_range+1): want_dict = {i:0 for i in want} for j in range(_range): try: want_dict[discount[i+j]] += 1 except: break if wa..

알고리즘 2023.07.05

[정보처리기사] 소프트웨어 구축 (4)

모듈 구현 단위 모듈 구현 개념 소프트웨어를 기능 단위로 분해하여 구현하는 기법 여기서 모듈이란? 하나의 기능을 수행하는 단위 효과적인 모듈화 결합도는 낮추고 응집도를 높여 모듈의 독립성을 높임 FAN-OUT 최소화, FAN-IN 증가 단위 모듈 설계의 원리 단계적 분해 추상화 독립성 정보은닉 분할과 정복 단위 모듈 작성 원칙 정확성 명확성 완전성 일관성 추적성 결합도 결합도 개념 두 모듈 사이의 연관 관계 결합도가 낮을수록 잘 설계된 모듈이다. 결합도 유형 내용 결합도 변수 또는 기능이 여기저기 모두 얽혀서 사용하는 경우 공통 결합도 전역 변수를 참조하고 사용할 경우 외부 결합도 외부 변수를 사용할 경우 제어 결합도 자료 결합도로 자료가 넘어가는데, 해당 자료로 제어문 즉 조건문을 사용할 때 스탬프 결..

정보처리기사 2023.07.05

[정보처리기사] 소프트웨어 구축 (3)

개발 환경 구축 서버 환경 구축 웹 서버(WEB) 클라이언트에게 정적 파일(HTML, CSS, JS, Image)을 제공하는 웹 서버 애플리케이션이 설치된 하드웨어 Apache Web Server, IIS, Nginx, GWS 등 웹 어플리케이션 서버(WAS) 동적인 웹 서비스를 제공하기 위한 미들웨어로 설치된 하드웨어 WebLogin, WebSpere, Jeus, Tomcat 등 데이터베이스 서버(DBMS) 데이터의 저장과 관리를 위한 데이터베이스 소프트웨어가 설치된 하드웨어 Oracle, MySQL, MS-SQL 등 파일서버 사용자의 파일을 저장하고, 파일을 목적으로 구성된 하드웨어 Load Balancer L4 switch 여기서 OSI7계층에서 사용되는 Layer 확인 L2: 집선으로 컴퓨터를 연..

정보처리기사 2023.07.04

[정보처리기사] 소프트웨어 구축 (2)

소프트웨어 설계 소프트웨어 설계 개념 요구사항 명세서를 참조하여 소프트웨어의 구체적인 설계서를 작성하는 단계 종류 (CASE 도구의 상위 CASE, 하위 CASE 와 유사) 상위 설계 (분석, 설계 관련) 아키텍처 설계 데이터 설계 인터페이스 정의 사용자 인터페이스 설계 하위 설계 (구현 관련) 모듈 설계 자료구조 설계 알고리즘 설계 소프트웨어 설계의 원리 정보은닉(Information Hiding) 다른 객체에게 자신의 정보를 숨기고, 자신의 연산만을 통해 접근이 가능하도록 한다. 분할과 정복(Divide & Conquer) 규모가 큰 소프트웨어를 여러 개의 작은 서브시스템으로 나누어 하나씩 완성시킨다. 추상화(Abstraction) 실세계의 복잡한 상황을 간결하고 명확하게 핵심 위주로 단순화시킨다. ..

정보처리기사 2023.07.04

[프로그래머스] 최대공약수와 최소공배수

우선 유클리드 호제법은 - 2개의 자연수 또는 정식의 최대공약수를 구하는 알고리즘의 하나. 그리고 호제법이란 - 두 수가 서로 상대방 수를 나누어서 결국 원하는 수를 얻는 알고리즘을 나타낸다. # 유클리드 호제법으로 작성한 첫 코드 def gcd(n,m): while m != False: n,m = m, n%m return n def lcm(n,m,x): return n*m//x def solution(n, m): x = gcd(n,m) return [x,lcm(n,m,x)] # 유클리드 호제법과 lambda를 사용한 코드 def solution(n, m): gcd = lambda a, b : b if not a%b else gcd(b,a%b) lcm = lambda a, b : a*b//gcd(a,b)..

알고리즘 2023.07.04

[정보처리기사] 소프트웨어 구축 (1)

소프트웨어 공학 소프트웨어 공학(Software Engineering) 소프트웨어 위기를 극복하고 효율적으로 품질 높은 소프트웨어를 개발하기 위한 학문 소프트웨어 공학의 3R 역공학(Reverse Engineering) 기존 개발된 시스템을 CASE(Computer Aided Software Engineering) 도구를 이용해 요구 분석서, 설계서 등의 문서로 추출하는 작업 개발 단계를 역으로 올라가 기존 개발된 시스템의 코드나 데이터를 시작으로 설계 명세서나 요구 분석서 등을 도출하는 작업 재공학(Re-Engineering) 소프트웨어의 위기를 해결하기 위해 개발의 생산성이 아닌 유지보수의 ****생산성으로 해결하려는 방법 기존 소프트웨어를 폐기하지 않고 기능을 개선시키거나 새로운 소프트웨어로 재활용..

정보처리기사 2023.07.04

[정보처리기사] 프로그램 언어 특성

프로그램 언어 특성 프로그래밍 언어의 유형 분류 개발 편의성 측면에 따른 분류 저급언어 컴퓨터가 직접 이해할 수 있는 언어 빠름 고급언어 인간이 이해할 수 있는 소스코드 느림 실행 및 구현 방식에 따른 분류 명령형 언어(Imperative Language) 컴퓨터가 동작해야 할 절차를 통해 프로그래밍의 상태를 변경시키는 구문에 중점을 둔 방식 종류 Fortran C 함수형 언어(Functional Language) 자료 처리를 수학적 함수의 계산으로 취급하고 상태와 가변 데이터를 멀리하는 프로그래밍 패러다임 중 하나 종류 LISP Scala 논리형 언어(Logic Language) 논리 문장을 이용해 프로그램을 표현하고 조건이 만족되면 연관된 규칙이 실행되는 방식 종류 Prolog 객체지향 언어(Obje..

정보처리기사 2023.07.03