Computer Science
[CSAPP] Chapter 05. Optimizing Program Performance(프로그램 성능 최적화 하기)
Chapter 05. Optimizing ProgramPerformance(프로그램 성능 최적화 하기) 모든 가능한 조건에서 프로그램이 정확하게 동작하도록 프로그램을 작성하는 것이 중요. 프로그래머는 분명하고 간결한 코드를 작성해야하고, 이해하기 쉽고 코드를 검토할 때와 수정할 때 다른 사람들도 코드를 읽고 이해할 수 있어야 함. 효율적인 프로그램 작성법 적절한 알고리즘과 자료구조 선택 컴파일러가 효과적으로 최적화해서 효율적인 실행코드로 변환할 수 있도록 소스코드를 작성 멀티 코어와 멀티 프로세서의 조합으로 병렬적인 방식으로 작업을 부분으로 나눔 컴파일러가 쉽게 최적화 할 수 있도록 코드를 작성하는 방법 불필요한 함수호출 제거 불필요한 조건 테스트 제거 불필요한 메모리 참조 제거 인스트럭션 병렬성 제공 ..
[백준] 9251번: LCS_JAVA
문제 (https://www.acmicpc.net/problem/9251) 문제 LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. 입력 첫째 줄과 둘째 줄에 두 문자열이 주어진다. 문자열은 알파벳 대문자로만 이루어져 있으며, 최대 1000글자로 이루어져 있다. 출력 첫째 줄에 입력으로 주어진 두 문자열의 LCS의 길이를 출력한다. 예제 입력 1 ACAYKP CAPCAK 예제 출력 1 4 풀이 - LCS(Longest Common Subsequence, 최장 공통 부분 수열)란 공통된 가장 긴 부분 수열이다. 즉 임..
[백준] 5525번: IOIOI_JAVA
문제 (https://www.acmicpc.net/problem/5525) 문제 N+1개의 I와 N개의 O로 이루어져 있으면, I와 O이 교대로 나오는 문자열을 PN이라고 한다. P1 IOI P2 IOIOI P3 IOIOIOI PN IOIOI...OI (O가 N개) I와 O로만 이루어진 문자열 S와 정수 N이 주어졌을 때, S안에 PN이 몇 군데 포함되어 있는지 구하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 S의 길이 M이 주어지며, 셋째 줄에 S가 주어진다. 출력 S에 PN이 몇 군데 포함되어 있는지 출력한다. 제한 1 ≤ N ≤ 1,000,000 2N+1 ≤ M ≤ 1,000,000 S는 I와 O로만 이루어져 있다. 서브태스크 번호배점제한 1 50 N ≤ 100, M ≤ ..
[백준] 1652번: 누울 자리를 찾아라_JAVA
문제 (https://www.acmicpc.net/problem/1652) 문제 일 년 동안 세계일주를 하던 영식이는 여행을 하다 너무 피곤해서 근처에 있는 코레스코 콘도에서 하룻밤 잠을 자기로 하고 방을 잡았다. 코레스코 콘도에 있는 방은 NxN의 정사각형모양으로 생겼다. 방 안에는 옮길 수 없는 짐들이 이것저것 많이 있어서 영식이의 누울 자리를 차지하고 있었다. 영식이는 이 열악한 환경에서 누울 수 있는 자리를 찾아야 한다. 영식이가 누울 수 있는 자리에는 조건이 있다. 똑바로 연속해서 2칸 이상의 빈 칸이 존재하면 그 곳에 몸을 양 옆으로 쭉 뻗으면서 누울 수 있다. 가로로 누울 수도 있고 세로로 누울 수도 있다. 누울 때는 무조건 몸을 쭉 뻗기 때문에 반드시 벽이나 짐에 닿게 된다. (중간에 어정..
[CSAPP] 3.11 Floating-Point Code(부동소수점 코드)
학습 주제 Floating-point data에 대한 architecture와 여러 instruction들, 그리고 여러 convention(passing as arguments, returning 관련)에 대해 학습할 것이다. 정리한 내용 3.11 개요 - Floating-point architecture processor를 위한 floating-point architecture는? ‘프로그램이 동작하는 machine에 매핑된 floating-point value’에 동작하는 방식에 영향을 끼치는 다양한 관점들로 구성된다. 다양한 관점들은 다음과 같다. 어떻게 floating point value들이 저장되고 접근되는지 → 이것은 몇몇 형태의 register에 의해 이뤄진다. floating-point..