목록분류 전체보기 (22)
이상한 코딩 나라의 혜돌이
make 명령은 makefile에 설정된 정보를 읽어서 여러 소스 파일을 컴파일하고 링크하여 최종 실행파일을 생성한다.이를 통해 컴파일 작업을 자동화하며, 다중 모듈 프로그램의 재사용을 유지하고, 프로그램 수정에 대한 재번역을 최소화한다.makefile을 작성하는 규칙은 다음과 같다 targetList : dependencyList[tab] commandList targetList : 목적 파일 목록dependencyList : 의존 파일 목록commandList : 명령어 목록 예를 들어 아래와 같은 makefile이 있다고 가정하자. main : main.o reverse.o gcc -o main main.o reverse.omain.o : main.c reverse.hgcc -c main.creve..
# 유니버설 해싱 (Universal Hashing) * 유니버설 해싱이란? 같은 자리에 여러 개의 키가 해시되는 것을 막기 위하여 실제 저장되는 키들과 독립적인 해시 함수를 무작위로 선택하는 것 유니버설 해싱에서 실행 초기에는 주의 깊게 설계된 함수의 집합으로부터 해시 함수를 무작위로 선택한다. 이때 해시 함수를 무작위로 선택하기 때문에 이 알고리즘을 동일한 입력에 대해서도 실행할 때마다 다르게 동작할 수 있어 임의의 입력에 대해 좋은 평균적 성능을 보장한다. * 유니버설 해시 함수 집합의 조건 Η를 키들의 전체집합 U를 {0, 1, ..., m - 1} 로 대응시키는 해시 함수들의 유한한 집합이라고 하자. 서로 다른 키 k, l ∈ U 각 쌍에 대해 h(k) = h(l)인 해시 함수 h ∈ Η 의 개..
Q. strange_sort함수는 strings와 n이라는 매개변수를 받아들입니다. strings는 문자열로 구성된 리스트인데, 각 문자열을 인덱스 n인 글자를 기준으로 정렬하면 됩니다. 예를들어 strings가 [sun, bed, car]이고 n이 1이면 각 단어의 인덱스 1인 문자 u, e ,a를 기준으로 정렬해야 하므로 결과는 [car, bed, sun]이 됩니다. strange_sort함수를 완성해 보세요. A. def strange_sort(strings, n): for i in range(len(strings)): strings[i] = strings[i][n:len(strings[i])] + strings[i] # arr[n:m] - list의 n부터 m 전까지 잘라서 가져오기. 이거 진짜 ..
Q. no_continuous함수는 스트링 s를 매개변수로 입력받습니다. s의 글자들의 순서를 유지하면서, 글자들 중 연속적으로 나타나는 아이템은 제거된 배열(파이썬은 list)을 리턴하도록 함수를 완성하세요. 예를들어 다음과 같이 동작하면 됩니다. s가 '133303'이라면 ['1', '3', '0', '3']를 리턴 s가 '47330'이라면 [4, 7, 3, 0]을 리턴 A. def no_continuous(s): data = [] if len(s) != 0: data.append(s[0]) # if문이 없으면 len(s)일 경우에 에러! for i in range(1, len(s)): if s[i - 1] != s[i]: data.append(s[i]) return data print( no_con..
Q. numPY함수는 대문자와 소문자가 섞여있는 문자열 s를 매개변수로 입력받습니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 리턴하도록 함수를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 예를들어 s가 pPoooyY면 True를 리턴하고 Pyy라면 False를 리턴합니다. A. def numPY(s): cntP = 0 cntY = 0 for i in range(len(s)): if s[i].lower() == 'p': cntP += 1 # lower() - 소문자로 만드는 함수. 반대는 upper() if s[i].lower() == 'y': cntY += 1 return cntP == cntY print( numPY("pP..
Q. sum_digit함수는 자연수를 전달 받아서 숫자의 각 자릿수의 합을 구해서 return합니다. 예를들어 number = 123이면 1 + 2 + 3 = 6을 return하면 됩니다. sum_digit함수를 완성해보세요. A. def sum_digit(number): a = 0 while number / 1 != 0: a += number % 10 number //= 10 # '/' 하나짜리를 쓰면 실수가 들어간다! '//'를 사용하면 정수. return a print("결과 : {}".format(sum_digit(123))); # 출력하는 다른 방식.
Q. 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬을 입력받는 sumMatrix 함수를 완성하여 행렬 덧셈의 결과를 반환해 주세요. 예를 들어 2x2 행렬인 A = ((1, 2), (2, 3)), B = ((3, 4), (5, 6)) 가 주어지면, 같은 2x2 행렬인 ((4, 6), (7, 9))를 반환하면 됩니다.(어떠한 행렬에도 대응하는 함수를 완성해주세요.) A. def sumMatrix(A,B): answer = [] m = len(A) if m > 0: n = len(A[0]) for i in range(m): tmp = [] for j in range(n): tmp.append(A[i][j] + B[i][j]) # append..
Q. rm_small함수는 list타입 변수 mylist을 매개변수로 입력받습니다. mylist 에서 가장 작은 수를 제거한 리스트를 리턴하고, mylist의 원소가 1개 이하인 경우는 []를 리턴하는 함수를 완성하세요. 예를들어 mylist가 [4,3,2,1]인 경우는 [4,3,2]를 리턴 하고, [10, 8, 22]면 [10, 22]를 리턴 합니다. A. def rm_small(mylist): # 함수 정의 부분. python은 괄호를 사용하지 않고 인덴트 블럭으로 구분한다! l = len(mylist) # len() - list의 길이를 반환하는 함수 if l == 0: return '' # 각종 제어문에도 괄호 없음. minidx = 0 min = mylist[0] for i in range(l)..
이번 팀 프로젝트에서 ajax를 사용할 일이 있었는데, 비동기식으로 데이터를 보낼 때 한글 인코딩 문제가 발생했다. 열심히 alert를 띄워 보니 문제는 request.send였다. 배울 때 분명히 아래와 같이 사용하라고 배웠다. request.send(escape(data)); 그런데 영어를 보낼 땐 잘 전송되는데 한글을 보내면 꼭 null값이 전송이 되는 문제가 발생했다. 찾아보니 escape함수가 한글은 지원하지 않는단다. 그래서 팀원이 encodedURIComponent도 써보고, ContentType도 바꿔보고, CharacterEncoding도 바꿔보고 별의 별 짓을 했는데도 문제가 해결되지 않았다 ㅠ_ㅠ 그런데 정말 허무한 방식으로 문제를 해결했다. request.send(data); 그냥 ..
보통 DB에서 레코드를 생성할 때, id값은 sequence를 이용하여 생성한다. 우리 팀도 그렇게 쿼리를 짜 뒀었다. 그런데... a를 insert하고, 곧이어 a의 id를 FK로 받는 b 레코드를 insert하는 경우 문제가 생겼다. id값을 모르는 데 어떻게 b를 insert하지 ...? id를 모르니까 검색할 수도 없는데 .. 끙끙 앓고 있는데 교수님이 문제를 명쾌하게 해결해 주셨다. 우선 Connection 연결하는 곳에 다음 세 메소드를 추가한다. // PK 컬럼 이름 배열을 이용하여 PreparedStatement를 생성 private PreparedStatement getPreparedStatement(String[] columnNames) throws SQLException { if (c..