![[Java] Error와 Exception에 대해](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMdBE9%2FbtqX81NFSZB%2FGZkgTYskKUXdu0j0MpK03k%2Fimg.png)
목차 이런 분들이 읽으시면 좋습니다 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..

문제로이동 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 목차 문제 설명 8*8 크기의 체스판을 완전탐색합니다. 즉, 크기가 8*8보다 더 큰 경우 위치를 옮겨가며 확인해야 합니다. 왼쪽부터 오른쪽으로 스캔하듯 모두 훑어줍니다. 가로 탐색이 끝났다면 이제 세로축을 한 칸 증가시켜야겠죠? 한 칸 내린후 위와 동일하게 오른쪽으로 쭉 가야합니다. 어떤 로직인지 이해 하셨나요? 그럼 최종적으로 아래 그림처럼 탐색을 마칩니다. 자. 이제 위와같은 체스판이 아닌 흑백이 섞인(또는 뒤죽박죽) 체스판 모양이 입력됩..

문제로이동 10096번: 세 친구 준규, 해빈, 진욱이는 다음과 같은 게임을 한다. 먼저, 준규가 문자열 S를 고른다. 그 다음, 해빈이는 S의 뒤에 S를 붙인 새로운 문자열 T를 만든다. 마지막으로 진욱이는 문자열 T의 어딘가(시작이 www.acmicpc.net 목차 테스트케이스 백준에서는 첫 번째 테스트케이스만 제공됩니다. NOT IMPOSSIBLE과 NOT UNIQUE 조건이 명시는 되어있는데 뭔가 이상해서 찾아보니 입력이 안된건지 더 있길래 가져왔습니다. 참고하시면 됩니다. 문제 설명 자세한 풀이 방법은 소스코드 Python의 주석처리를 참고하시기 바랍니다. 처음엔 모든 알파벳이 같은 경우를 생각하지 않고 아니 이게 맞는데 왜 틀려?? 라고 생각했다가 3번의 WA를 받고 깨우쳤습니다.. Pytho..

문제로이동 목차 문제 설명 알고리즘 문제라기 보다는 수학에 많이 가깝습니다. 두 원을 그려서 교점(겹치는 점)을 찾아내는 문제이며, 정답률이 많이 낮은 것으로 봐서는 여러 경우의 수를 고려하지 못했던 것 같습니다. 물론 저도 정답률 낮추는 데 한 몫 했습니다 ^^ 소스코드도 위와 같은 순서로 분리되어 있습니다. 1. 원이 완전히 겹치는 경우 (출력값 0) 두 원의 거리가 0이면서 반지름도 같은 경우를 말합니다. 2. 원이 한쪽 면만 닿는 경우 (출력값 1) (내접) 두 원의 거리 == 원1 반지름 + 원2 반지름 단, 원1 반지름과 원2 반지름의 길이를 비교해서 작은 값, 큰 값으로 분류해도 되지만 편의상 절대값 abs를 이용했습니다. (외접) 두 원의 거리 - r1 = r2 아래 그림을 참고 바랍니다...