본문 바로가기

분류 전체보기

백준 17114 - 미세먼지 확산 빡구현 문제였다. 카카오 기출 카드짝 맞추기도 그렇고 이번문제도 그렇고 이것저것 많이 풀어보다보니 확실히 구현문제 실력이 성장한 것 같다. def spread(arr, height, width, cleaner) : spreadList = [] direction = { 0:[0,-1], 1:[0,1], 2:[-1,0], 3:[1,0] } newArr = [[ 0 for _ in range(width)] for i in range(height)] newArr[cleaner[0]][0] = -1 newArr[cleaner[1]][0] = -1 for y in range(height): for x in range(width): if arr[y][x] == -1 : continue if arr[y][x] != 0.. 더보기
백준 11657 타임머신 INF = int(1e9) def solution() : for i in range(node): for s,e,v in edgeArr: if dist[s] != INF and dist[e] > dist[s] + v : dist[e] = dist[s] + v if i == node-1: return True return False node, edge = map(int, input().split()) edgeArr = [] dist = [INF] * (node + 1) dist[1] = 0 for i in range(edge) : edgeArr.append(list(map(int,input().split()))) if solution() : print(-1) else : for i in range(2, no.. 더보기
8월 5주차, 9월 1주차 계획 보호되어 있는 글입니다. 더보기
카카오 기출 - 카드 뒤집기 from itertools import permutations def movePosition(start, end, board): startY, startX = start endY, endX = end cnt = 0 # 가로먼저 이동 if startX < endX: if endX - startX == 1: cnt += 1 elif endX - startX == 2: if board[startY][startX + 1] != 0: cnt += 2 elif endX == 3: cnt += 1 elif board[startY][endX] != 0: cnt += 1 elif board[startY][endX] == 0: cnt += 2 elif endX - startX == 3: for i in range(1, 4.. 더보기
카카오 기출 - 표편집 실패 from functools import reduce def moveCur(movement, arr, curIdx, m): while movement > 0: curIdx += m if arr[curIdx][1] == 'O': movement -= 1 return curIdx def findNextIdx(curIdx, arr): length = len(arr) ret = curIdx while curIdx 0: ret -= 1 if arr[ret][1] == 'O': return ret def solution(n, k, cmd): answer = '' curIdx.. 더보기
정보처리기사 필기, 실기 후기 필기 실기 모두 한큐에 합격했다 ㅋㅋㅋ 준비물 수험표, 컴싸(필기), 펜(실기), 민증 내 상황 보안학과 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.. 더보기
스프링 No serializer found for class 에러 해결 문제는 아래와 같은 코드에서 발생했다. @RestController public class ItemController { @GetMapping("/items") public List items(){ List itemList = new ArrayList(); itemList.add(new Item("ldsa", 25)); return itemList; } static class Item { private String name; private int age; public Item(String name, int age) { this.name = name; this.age = age; } } } 발생한 이유는 간단하다. 리턴 타입이 객체이므로 메시지 컨버터에서 Json으로 변환해줘야 하는데 private 필드들.. 더보기
카카오 기출 - 키패드 누르기 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 +.. 더보기
스프링 데이터 jpa - 구현체 코드 구경, 쿼리 dsl 구현체 살펴보기 스프링 데이터 jpa 레포지토리의 구현체이다. 특징 1. @Repository 스프링 빈의 컴포넌트 스캔대상 Exception을 서비스, 컨트롤러로 넘길때 스프링의 Exception으로 변경되어 올라감. 특징 2. @Transactional 그래서 레포지토리나 서비스에서 @Transactional이 안달려있어도 잘 동작했던 것. save 동작과정 디비에 결과를 반영해야하는 save같은 경우에는 readonly 옵션이 false이다. save 메소드 내부에서는 엔티티의 pk가 null이면 if문 내부로 들어갈 것이다. 하지만 만약에 다음과 같은 상황이라면? public class Member extends JpaBaseEntity { @Id private Long id; //기본생성자 //.. 더보기