컴퓨팅 시스템 생각보다 재밌을 듯
용어가 어려워서 자주 찾아보면서 하게 된다.
총체적으로 이해하게 되면 앞으로 코딩할 때 도움이 많이 될듯
hello.c : Source Program(text) -> 전처리 Pre-Processor(cpp)
-> hello.i : Modified Source Program(text) -> 컴파일 Compiler(ccl)
-> hello.s : Assembly Program (text) -> 어셈블러 Assembler(as)
-> hello.o : Relocatable object programs(binary) -> 링커 Linker(ld)
-> hello : Executable object program(binary)
전처리 cpp : #으로 시작하는 디렉티브에 따라 수정, #include <studio.h> 헤더 파일인 studio.h를 프로그램 문장에 삽입하라고 지시. -> .i로 끝나는 새로운 C프로그램 생성
컴파일(ccl) : .i 를 .s 로 번역 후 어셈블리어 프로그램 저장.
어셈블리(as) : hello.s를 기계어 인스트럭션으로 번역 후 재배치 가능 목적 프로그램의 형태로 묶어서 hello.o 목적 파일에 결과 저장.
링크(ld) : C 컴파일러에서 제공하는 표준 C 라이브러리에 들어있는 printf 함수 호출. printf 함수는 이미 컴파일된 목적 파일 printf.o에 존재 hello.o와 결합하기 위해서 링커 프로그램이 통합작업 수행. - > 그 결과 hello 파일은 실행가능 목적파일 (실행파이례)로 메모리에 적재되어 시스템에 의해 실행
추가 용어
2달 정도 쉬고 보니까 기억이 흐릿하다.
공채 끝나고 마음이 너무 꺾여서 알고리즘 공부를 이어하지 않은게 아쉽지만
지나간 일은 어쩔 수 없고
앞으로가 중요할 것 같다.
재귀함수 하노이 까지 풀어봤었어서 그렇게까지 어렵다곤 생각하지 않았었는데
오늘 생각이 바뀌었다.
N-Queen 은 내일 다시 해보는걸로.
골드바흐의 추측
아쉬움이 남는 문제다
# 골드바흐의 추측
import sys
input = sys.stdin.readline
n = int(input())
for i in range(n):
a = int(input())
arr = []
for p in range(2, a):
for q in range(2, p+1):
if p % q == 0:
if p == q:
arr.append(p)
break
for i in arr:
for j in arr:
if i + j == a:
if i > j:
break
print(i, j)
이 코드로 시도했는데 실패했고
코어 학습 시간에 다른 팀원의 풀이를 보고
2로 나눈 두 값을 +-1을 하며 값을 찾아가는 과정을 선택했다.
알고리즘 공부할 때 빠르게 풀려고 하지말고
좀 더 알고리즘을 찾는데 집중해보는게 먼저인듯
자꾸 까먹는데 소수 찾는 거 좀 그만 까먹자
print( end, sep )
end = '' : 출력 후 뒤에 이어서 출력할 내용, 기본적으로 \n 이 있으므로 end='' 로 설정시 줄바꿈 차단
sep = '' : separation, 분리하여 출력 '' 안에 구분자를 넣어서 문자들 사이를 구분 가능, sep='' 로 설정시 띄어쓰기 차단