문제로이동 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com (상) DFS, (하) BFS 문제 설명 이 문제는 DFS, BFS로 풀이가 가능하며, 최단경로를 구하는 문제이므로 다익스트라 접근도 가능합니다. 저는 DFS와 BFS로 접근했으며 아래와 같은 변수를 사용했습니다. 1. 방문을 체크하는 visited 2. Cost를 저장하는 dp 3. 기본 필드 입력 field 난이도 D3정도 되는 일반적인 BFS, DFS문제와 비교했을때 가장 큰 차이점은 가지치기 입니다. 그렇기에 아직 방문하지 않았거나(visited) 현재 좌표에서 cost가 더 낮다면 갱신(dp)하는 방법으로 가지치기 할 수 있습니다. 아래는 co..
문제로이동 목차 문제 설명 일반적인 최소스패닝 트리(MST) 문제입니다. 크루스칼 알고리즘과 프림 알고리즘으로 해결해봤습니다. 런타임 에러1 이 문제는 테스트 케이스가 여러개 들어옵니다. 마지막 0 0 입력이 왜 있는가 했더니,, 결국 이 문제점을 뒤늦게 이해하고 코드 수정을 하여 AC를 받았습니다. 즉, 0 0이 입력되기 전까지 테스트 케이스가 무한대로 들어오니 M,N 값을 검증해야 합니다. if(M==0 && N==0) return; 런타임 에러2 전혀 생각지 못했던 이유였습니다. 하단 소스코드엔 while문 밖으로 선언되어 있지만 아래처럼 while문 내에 삽입했더니 발생했습니다. while(true){ BufferedReader br = new BufferedReader(new InputStrea..
목차 상시지원 6기부터 상시지원 제도를 도입한다고 합니다. 지원서를 미리 작성하고 실제 작성 기간에 미리 작성해둔 정보를 불러와 그대로 제출할 수 있다는데 미리 준비해 둔다면 굉장히 유용할 것 같은 기능이네요. 추첨으로 블루투스 키보드, 커피 쿠폰도 주네요 ㅠㅠㅠ 얼른 상시 등록 하셔서 많은 혜택 누리시길 바랍니다!! 지원 페이지 링크 인스타크램 링크 작성해둔 게시글이 다음 기수 지원에 참고가 될 만한 정보였으면 좋겠습니다. SSAFY 후기 목록 '후기/SSAFY' 카테고리의 글 목록 썸네일만큼은 진심입니다 code1995.tistory.com
목차 이런 분들이 읽으시면 좋습니다 Checked, Unchecked를 처음 듣거나 긴가민가 하시는 분 Error와 Exception을 왜 함께 다루는지 궁금하신 분 실습 이전에 이론적 개념이 필요하신 분 왜 Error와 Exception을 함께 다루는가? Exception을 계속 타고 올라가다보면 최상위에 Throwable이 있습니다. 이 Throwable 하위엔 2가지 자식 클래스가 존재하는데, 각각 Error 클래스와 Exception 클래스입니다. 이미 다른 블로그 포스팅에 항상 Exception과 Error를 함께 설명하는 글이 많을텐데요, Throwable의 하위 자식이기 때문에 언급을 하고 넘어가는 것 같습니다. Error Class 에러는 간단하게 짚고 넘어가겠습니다. 백준과 같은 oj사이..
자세한 커리큘럼은 언급되지 않습니다. 또한 모든 내용은 지극히 주관적임을 말씀드립니다. 이런 분들이 읽으시면 좋습니다 1. 싸피 지원을 희망하시는 분(싸피 6기, 7기 ...) 2. 제 사생활이 궁금하신 분 SSAFY 커리큘럼 후기 1주차 스타트 캠프 : OT, 반별 OT, 반 배정, 추가 합격 다들 어색 어색한 분위기지만 반 별로 꼭 한 명씩 리드하는 사람이 있습니다.(저 아님 진짜 아님) 마치 SSAFY에서 MBTI로 반 별 배치시킨 건 아닌가.. 하는 생각도 들었는데 골고루 배치되어 있다는 느낌을 받았습니다. 이 때 각 반 임시 반장님들과 담당 프로님께서는 반 인원끼리 어떻게 빨리 친해질 수 있을까라는 고민을 다 같이 했습니다. 함께 얘기를 나눴던 반장님들 너무 감사합니다.😀 스타트 캠프선물로 후드..
목차 결론 시프트연산이 더 빠릅니다. (미미하게) 시프트 연산은 int형이 32bits이므로 사용하는데 제한이 있습니다. 물론 언어별로 사용할 수 있는 방법이 상이한 것으로 알고 있습니다. 필요한 상황에 따라, 본인 스타일에 따라 적절히 사용하시면 되겠습니다. Python 디스어셈블러 내부적으로 어떻게 다른지 간단하게 살펴보겠습니다. 코드는 위의 소스코드를 사용했으며, 나누기 연산을 호출할 때와 시프트를 호출할 때 디스어셈블러로 살펴보았습니다. 차이점은 BINARY_TRUE_DIVIDE와 BINARY_RSHIFT를 호출 하는 것입니다. 내부적인 동작을 살펴보려 했으나 자세한 내용이 설명된 DOC이 없어서 생략하겠습니다. 결론적으로 파이썬3(3.6~3.8)에선 별도의 최적화 과정은 없었습니다. C++ 디스..
문제로이동 목차 문제 설명 펜윅트리를 하며 비트마스킹을 써왔던 것이 조금은 도움이 되었습니다. 이번 문제는 만들어둔 사진으로 대체하겠습니다. 아래의 과정(BFS)을 반복적으로 거치고 나면 가장 처음에 입력된 값을 기준으로 1의 거리를 가진 간선들이 연결되어 있습니다. 소스 코드 Python from collections import deque import sys input = sys.stdin.readline MIN = -10e9 N = int(input()) M = int(input()) arr = [MIN]*1000001 dq = deque() xs = list(map(int,input().split())) for x in xs: arr[x] = 0 dq.append(x) maxnum = 0 whil..
무엇을 경험했나? 백준 2263 트리 문제를 풀면서 경험했던 것을 공유하려 합니다. RecursionError sys.setrecursion(10**5) //pypy3에서는 정답, python3에서는 recursionError sys.setrecursion(10**6) //pypy3에서는 메모리초과, python3에서는 정답 (21.03.05 추가) 분명 동일한 recursion 깊이인데 왜 pypy3는 정답이고 python3는 recursionError(깊이 초과)가 발생할까요? pypy doc을 살펴보면 이렇게 설명되어 있습니다. 링크 pypy3에서는 정확한 크기를 할당하는 것이 아니라 대략적으로 크기를 할당하기 때문에 위와 같은 문제가 발생하게 됩니다. 메모리 초과(MLE) : write와 prin..
문제로이동 목차 문제 설명 재귀함수를 이용해 풀었습니다. 각 order의 특징을 살펴보면 inOrder : LVR (왼쪽-뿌리-오른쪽) postOrder : LRV (왼쪽-오른쪽-뿌리) preOrder : VLR (뿌리-왼쪽-오른쪽) 이러한 특징을 가졌는데, inOrder와 postOrder를 잘 보시면 구조가 다르기 때문에 이를 이용하여 풀어야 합니다. 1. postOrder는 뿌리의 위치가 항상 맨뒤에 존재합니다. 그래서 매 번 가장 마지막 노드를 가장 먼저 출력합니다. 2. 해당 뿌리 위치 왼쪽까지를 재귀합니다. 3. 해당 뿌리 위치 오른쪽부터 재귀합니다. 4. 1~3을 반복합니다. 문제 후기 pypy3와 python3의 차이점을 몸소 경험했던 문제였습니다. 신선한 충격이었고 덕분에 멘탈이 탈탈 털..
문제로이동 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 목차 풀이 과정 첫 시도엔 BFS를 떠올려 시도했습니다. D3에 BFS가 나올리는 없어서 다시 생각해보니 다이아몬드 형태를 한 번에 더할 수 있겠다는 확신이 들었습니다. 0 - 1 - 2 - 1 - 0과 같이 점차 증가했다가 중간값에 도달하면 다시 감소하는 식을 구했습니다만, 해당 방법 이외에도 양 끝점에서 동시에 값을 더하는 방법이 있습니다. for(int i =0;iN/2)break; Deque orderQ = new ArrayDeque(); for(Pos dpos:direction) { int nx = tmp.x+dpos.x; int ny = tm..