본문 바로가기

컴퓨터

정보처리기사 필기, 실기 후기 필기 실기 모두 한큐에 합격했다 ㅋㅋㅋ 준비물 수험표, 컴싸(필기), 펜(실기), 민증 내 상황 보안학과 4학년 1학기, 개발관련 프로젝트 2회 진행 전공자 후기, 공부방법 필기, 실기 모두 시나공으로 공부했다. 필기 시나공 같은 경우에는 각 단원, 챕터별로 중요도가 A, B, C, D 이렇게 매겨져있는데 정말 D 는 볼 필요가 없다. 시간이 없다면 C까지 제껴도 크게 상관이 없을 것 같다. 무슨 명세서? 요구사항 명세서? 같은 쓰잘데기 없는거 외우고 있을 시간에 A, B 랑 모의고사나 더 풀자. 필기는 3주 정도잡고 매일 2시간, 시험 직전 3일 좀 열심히 한 것 같다. 시나공 책 2회독하고 모의고사랑 기출 풀고 외웠다. 결과는 80후반이었던 걸로 기억한다. 커트라인이 평균 60점 이상이기만 하면 되니.. 더보기
백준 2156 - 포도주 [dp] num = int(input()) arr= [int(input()) for _ in range(num)] dp = [False for _ in range(num)] if num == 1 : print(arr[0]) else : dp[0] = arr[0] dp[1] = arr[0] + arr[1] for i in range(2, num) : dp[i] = max(dp[i - 2] + arr[i], dp[i-3] + arr[i-1] + arr[i]) dp[i] = max(dp[i], dp[i-1]) print(dp[-1]) 하나 건너뛰면서 선택하던 기본 dp 문제들에서 한단계 업그레이드 된 문제. 해결 아이디어 1) 현재의 상황에서 생각하기 2) 만약 현재 선택이 건너뛰고 첫 선택이라면 dp[i-2] + a.. 더보기
카카오 기출 - 키패드 누르기 def solution(numbers, hand): answer = '' middleNum = { 2: [0, 1], 5: [1, 1], 8: [2, 1], 0: [3, 1] } l = [3, 0] r = [3, 2] for num in numbers: if num in (1, 4, 7): answer += 'L' l[0] = int(num / 3) elif num in (3, 6, 9): answer += 'R' r[0] = int(num / 3 - 1) else: # 2,5,8,0 y, x = middleNum[num] Rdist = abs(r[0] - y) + abs(r[1] - x) Ldist = abs(l[0] - y) + abs(l[1] - x) if Rdist < Ldist: answer +.. 더보기
카카오 2021 기출 - 광고삽입 실패1 def strToTime(str): str = str.split(':') return int(str[0]) * 3600 + int(str[1]) * 60 + int(str[2]) def timeToStr(time): h = time // 3600 time = time % 3600 m = time // 60 sec = time % 60 return f'{h:0{2}d}:{m:0{2}d}:{sec:0{2}d}' def solution(play_time, adv_time, logs): play_time = strToTime(play_time) adv_time = strToTime(adv_time) timeArr = [0] * play_time logs = list(map(lambda x: x.split.. 더보기
카카오 2021 기출 - 합승 택시요금 [워셜 플로이드] def solution(numOfPoint, S, A, B, edges) : costs = [[0 if i==j else 1000000000 for i in range(numOfPoint)] for j in range(numOfPoint)] for edge in edges: costs[edge[0]-1][edge[1]-1] = edge[2] costs[edge[1]-1][edge[0]-1] = edge[2] for middlePoint in range(numOfPoint): for start in range(numOfPoint): for end in range(numOfPoint): if middlePoint != start and middlePoint != end and start != end: cos.. 더보기
백준 11559 [bfs] answer = 0 arr = [input() for _ in range(12)] for i in range(12) : arr[i] = list(arr[i]) def bfs(i, j, visited) : target = arr[i][j] q = [[i,j]] dirs = [[1,0],[-1,0],[0,1],[0,-1]] ret = [[i,j]] while q : y ,x = q.pop(0) for dir in dirs: nextY, nextX = y+dir[0], x+dir[1] if nextX >=0 and nextX =0 and nextY < 12 and arr[nextY][nextX] == target and not visited[nextY][nextX]: visited[.. 더보기
정규 표현식 기초활용 - 전화번호, 금액 찾기 1. 금액 찾기 \d{1,3}(,\d{3})* 금액은 보통 , 를 구분자로 해서 12,345,678 이런식의 형태를 갖는다. 숫자를 찾을거니까 \d를 한 뒤에 첫번째에 나오는 숫자는 1~3자리니까 {1,3} 으로 해두면 \d{1,3}은 1~3자리의 숫자를 찾을 것이다. 이후에는 ,333,333,333 이런식의 패턴이 반복될 것이다. 그러므로 뒤에 값이 있다면 컴마와 숫자 3개가 나올것임이 보장되어있으므로 ,\d{3} 을 하고 이들을 소괄호로 감싸서 반복자를 붙일 수 있게 해준다. 반복자는 *를 붙인다. 없을 수도 있으니 0개 이상을 의미하는 *를 붙인다. (+는 1개 이상을 의미) 2. 전화번호 찾기 전화번호는 좀 더 쉽다. 000-0000-0000의 형식이라고 가정했을때 \d{3}으로 맨앞에 숫자 3개.. 더보기
VSCode 터미널 오류 - 이 시스템에서 스크립트를 실행할 수 없으므로 권한이 없어서 발생하는 문제이다. 1. power shell 관리자 모드로 실행 2. get-help Set-ExecutionPolicy 명령어를 입력 이렇게하면 모듈에 대한 최신 도움말을 받는다고 한다. 받는데 대략 3분 걸렸다.(아마 생략해도 되지 않나 싶다) 3. Set-ExecutionPolicy RemoteSigned 하고 Y 입력 해결! 더보기
프로그래머스 - 거리두기 확인 (카카오 2021 인턴) import math def check(place, p1,p2) : y1, x1 = p1 y2, x2 = p2 if x1 == x2 : if y2 - y1 > 2 : return True if place[y2-1][x1] == 'X' : return True return False elif y1 == y2 : if x2 - x1 > 2 : return True elif place[y1][x2-1] == 'X' : return True return False else : if abs(x2-x1) + y2-y1 > 2: return True if place[y1][x2] == 'X' and place[y2][x1] == 'X' : return True return False def solution(place.. 더보기
프로그래머스 - 테두리 회전하기 2차원 배열 다루는 문제인데,, 의도에 맞게 푼건진 모르겠다. 무슨 의도로 낸 문제일까... 딱히 어려울 거 없이 한큐에 달린 문제 def rotate(q, arr) : y1, x1, y2, x2 = q y1, x1, y2, x2 = y1-1, x1-1, y2-1, x2-1 tmp = arr[y1+1][x1] minimum = tmp for i in range(x1, x2+1) : tmp, arr[y1][i] = arr[y1][i], tmp minimum = minimum if minimum < tmp else tmp for i in range(y1+1, y2+1) : tmp, arr[i][x2] = arr[i][x2], tmp minimum = minimum if minimum < tmp else tm.. 더보기