목록전체 글 (29)
해야만 한다
목차 시험을 보게 된 계기 베이스 준비 기간 공부 방법 소감 1. 시험을 보게 된 계기 비전공자로서 훗날 취업할 때 조금이라도 도움이 되기를 바라는 마음으로 시험을 보게 되었다. 2. 베이스 비전공자 SQL은 SSAFY 커리큘럼을 통해 미약하게 실습을 해본 정도 필기 지식은 전무하다싶은 수준 3. 준비기간 일주일 4. 공부 방법 오로지 노랭이 한권으로만 공부했다. 노랭이 책은 상당히 퀄리티가 더럽다. 오타 투성이에 해설은 부실하고 가격은 비싸다. 날로 먹는 책이다. 안타깝게도 다른 대안이 없기에 노랭이를 사야만 했다. 나는 짧은 준비 기간에 맞지 않는 공부 방법을 택했는데, 기출을 풀면서 선지 중에서 모르는 내용이 있으면 무조건 받아 적는 것이었다. 예를 들어 '옳지 않은' 선지를 고르는 문제에서 1번 ..
SSAFY 시작하고 5개월 만에 플래티넘을 달성했습니다. 브론즈 문제에서 고생하던 게 엊그제 같은데 감회가 새롭네요 처음에는 단계별로 풀기 위주로 풀고 어느 정도 기본기가 잡힌 이후에는 DFS, BFS, 다이나믹 프로그래밍, 그래프 탐색 등 중요 알고리즘 위주로 풀었습니다. 여유가 생기고 나서는 solved.ac의 Class 위주로 풀면서 내가 좋아하는 데이크스트라, 위상 정렬, 분리 집합, 최소 스패닝 트리, BFS 위주로 풀었습니다. 앞으로는 다이나믹 프로그래밍, 그리디, 구현, 재귀, 백트래킹 위주로 공부할 생각
목차 1. SSAFY에 지원하게 된 배경 2. 지원하기에 앞서 내가 가진 스펙, 기술 스택 등 3. 준비과정 4. 기타 1. SSAFY에 지원하게 된 배경 대학교 전공이 나와 맞지 않아서 학점도 자연스레 떨어졌고 진로에 대한 고민을 하던 찰나에 프로그래밍이 가미된 전공 수업을 들으면서 유례없는 흥미를 느끼게 되었고 마침 SSAFY 10기를 모집하던 시기였고 부트캠프 계열에선 1 티어인 데다가 교육지원금도 130만 원 정도 되었기에 고민하지 않고 지원했다. 2. 눈물겨운 나의 스펙 학력 : 지방 국립대 인문계 학점 : 2.9... 자격증 : 없음 어학 : 없음 대외 활동 : 경험 없음 코딩 경험 : 전공 수업때 살짝 맛본 정도 부끄럽지만 대학교 다니면서 이룬 것도 없었고 완전히 노베이스에서 시작했다. 3...
문제 링크 풀이 인접한 아이들의 키 차이를 구하고 내림차순 정렬해서 상위 k-1명을 제외한 후 나머지의 차이의 합을 구하면 된다. 코드 ''' 인접한 것들 중 차이가 큰 친구들을 나눠서 4조를 만들어보자 1, 50 | 500 | 5000 | 5500, 5600 (49,1) (450,2) (4500,3) (500,4) (100,5) 선택된 것들은 3,4,2인데 총 비용은 3,4,2의 차이를 제외한 1과 5의 합 149 1, 50 | 500 | 5000, 5001 | 6000, 6001, 6002 (49,1) (450,2) (4500,3) (1,4) (999,5) (1,6) (1,7) 3과 5와 2가 선택됐고 49+1+2 결국 선택된 2,3,5를 제외하면 된다 differ 순으로 내림차순, k-1개 만큼 선..
문제 링크 풀이 A와 B 2 처럼 브루트포스 + 재귀로 도전했는데 실패했다. 시간 초과를 해결하기 위해서는 s를 t로 만드는 것이 아닌 t를 s로 만든다. s와 t를 리스트로 받아서 pop하는 방식을 사용한다. 코드 ''' 문자열의 뒤에 A를 추가한다. 문자열을 뒤집고 뒤에 B를 추가한다. ''' # s = input() # t = input() # check = 0 # t_A = t.count('A') # t_B = t.count('B') # def sol(st): # global check # t_reverse = t[::-1] # st_reverse = st[::-1] # st_A = st.count('A') # st_B = st.count('B') # if st_A > t_A: # return #..
문제 링크 풀이 순회하면서 사람을 발견하면 양 옆으로 k거리만큼의 범위 내에서 햄버거를 찾고 count를 증가시킨 후 P와 H가 아닌 다른 문자로 바꿔준다. 코드 n, k = map(int, input().split()) a = list(input()) cnt = 0 for i in range(len(a)): if a[i] == 'P': for j in range(max(i-k,0),min(i+k+1,n)): if a[j] == 'H': cnt += 1 a[j] = 'C' break print(cnt)
문제 링크 풀이 n = 1 일 때 2x1 타일 하나, n = 2 일 때 2x1 타일 둘 혹은 1x2 타일 둘 즉 dp[1], dp[2] = 1, 2 dp[3]부터는 이전 기록해뒀던 누적값들을 더해나간다 이를 점화식으로 세우면 dp[i] = dp[i-2] + dp[i-1] 코드 n = int(input()) dp = [0] * (n+2) dp[1] = 1 dp[2] = 2 for i in range(3,n+1): dp[i] = dp[i-2] + dp[i-1] print(dp[n]%10007)
문제 링크 풀이 i와 j로 순회하여 오일 가격을 비교하면서 더 싼 곳이 나오면 그 직전까지 오일을 다 산다 즉 최저가가 갱신될 때마다 그 직전까지 다 구매하는 방식 코드 import sys input = sys.stdin.readline n = int(input()) road_length = list(map(int, input().split())) oil_price = list(map(int, input().split())) i = 0 j = 1 res = 0 while 1: # 더 비싸거나 같은 가격이면 if oil_price[i]