[Java] Error와 Exception에 대해
Tech/Java&Spring2021. 2. 21. 22:05[Java] Error와 Exception에 대해

목차 이런 분들이 읽으시면 좋습니다 Checked, Unchecked를 처음 듣거나 긴가민가 하시는 분 Error와 Exception을 왜 함께 다루는지 궁금하신 분 실습 이전에 이론적 개념이 필요하신 분 왜 Error와 Exception을 함께 다루는가? Exception을 계속 타고 올라가다보면 최상위에 Throwable이 있습니다. 이 Throwable 하위엔 2가지 자식 클래스가 존재하는데, 각각 Error 클래스와 Exception 클래스입니다. 이미 다른 블로그 포스팅에 항상 Exception과 Error를 함께 설명하는 글이 많을텐데요, Throwable의 하위 자식이기 때문에 언급을 하고 넘어가는 것 같습니다. Error Class 에러는 간단하게 짚고 넘어가겠습니다. 백준과 같은 oj사이..

SSAFY 5기 6주간 경험한 후기(회고록)
후기/SSAFY2021. 2. 18. 16:28SSAFY 5기 6주간 경험한 후기(회고록)

자세한 커리큘럼은 언급되지 않습니다. 또한 모든 내용은 지극히 주관적임을 말씀드립니다. 이런 분들이 읽으시면 좋습니다 1. 싸피 지원을 희망하시는 분(싸피 6기, 7기 ...) 2. 제 사생활이 궁금하신 분 SSAFY 커리큘럼 후기 1주차 스타트 캠프 : OT, 반별 OT, 반 배정, 추가 합격 다들 어색 어색한 분위기지만 반 별로 꼭 한 명씩 리드하는 사람이 있습니다.(저 아님 진짜 아님) 마치 SSAFY에서 MBTI로 반 별 배치시킨 건 아닌가.. 하는 생각도 들었는데 골고루 배치되어 있다는 느낌을 받았습니다. 이 때 각 반 임시 반장님들과 담당 프로님께서는 반 인원끼리 어떻게 빨리 친해질 수 있을까라는 고민을 다 같이 했습니다. 함께 얘기를 나눴던 반장님들 너무 감사합니다.😀 스타트 캠프선물로 후드..

Python3 나누기연산(/)과 시프트연산(>>)의 속도 차이를 알아보자
Tech/Python2021. 2. 15. 15:34Python3 나누기연산(/)과 시프트연산(>>)의 속도 차이를 알아보자

목차 결론 시프트연산이 더 빠릅니다. (미미하게) 시프트 연산은 int형이 32bits이므로 사용하는데 제한이 있습니다. 물론 언어별로 사용할 수 있는 방법이 상이한 것으로 알고 있습니다. 필요한 상황에 따라, 본인 스타일에 따라 적절히 사용하시면 되겠습니다. Python 디스어셈블러 내부적으로 어떻게 다른지 간단하게 살펴보겠습니다. 코드는 위의 소스코드를 사용했으며, 나누기 연산을 호출할 때와 시프트를 호출할 때 디스어셈블러로 살펴보았습니다. 차이점은 BINARY_TRUE_DIVIDE와 BINARY_RSHIFT를 호출 하는 것입니다. 내부적인 동작을 살펴보려 했으나 자세한 내용이 설명된 DOC이 없어서 생략하겠습니다. 결론적으로 파이썬3(3.6~3.8)에선 별도의 최적화 과정은 없었습니다. C++ 디스..

백준 20304 비밀번호 제작 풀이 python, java
OnlineJudge2021. 2. 8. 16:19백준 20304 비밀번호 제작 풀이 python, java

문제로이동 목차 문제 설명 펜윅트리를 하며 비트마스킹을 써왔던 것이 조금은 도움이 되었습니다. 이번 문제는 만들어둔 사진으로 대체하겠습니다. 아래의 과정(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..

몸소 겪었던 Python과 PyPy의 차이(메모리,속도)
Tech/Python2021. 2. 5. 00:19몸소 겪었던 Python과 PyPy의 차이(메모리,속도)

무엇을 경험했나? 백준 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..

백준 2263 트리 풀이 pypy3, python3, java
OnlineJudge2021. 2. 4. 23:49백준 2263 트리 풀이 pypy3, python3, java

문제로이동 목차 문제 설명 재귀함수를 이용해 풀었습니다. 각 order의 특징을 살펴보면 inOrder : LVR (왼쪽-뿌리-오른쪽) postOrder : LRV (왼쪽-오른쪽-뿌리) preOrder : VLR (뿌리-왼쪽-오른쪽) 이러한 특징을 가졌는데, inOrder와 postOrder를 잘 보시면 구조가 다르기 때문에 이를 이용하여 풀어야 합니다. 1. postOrder는 뿌리의 위치가 항상 맨뒤에 존재합니다. 그래서 매 번 가장 마지막 노드를 가장 먼저 출력합니다. 2. 해당 뿌리 위치 왼쪽까지를 재귀합니다. 3. 해당 뿌리 위치 오른쪽부터 재귀합니다. 4. 1~3을 반복합니다. 문제 후기 pypy3와 python3의 차이점을 몸소 경험했던 문제였습니다. 신선한 충격이었고 덕분에 멘탈이 탈탈 털..

SWEA 2805 농작물 수확하기 풀이 java
OnlineJudge2021. 2. 3. 16:57SWEA 2805 농작물 수확하기 풀이 java

문제로이동 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 체스판 다시 칠하기 풀이 python, java
OnlineJudge2021. 1. 30. 00:34백준 1018 체스판 다시 칠하기 풀이 python, java

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

백준 10096 세 친구 풀이 python, java
OnlineJudge2021. 1. 29. 22:49백준 10096 세 친구 풀이 python, java

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

백준 1002 터렛 풀이 python, java
OnlineJudge2021. 1. 27. 23:35백준 1002 터렛 풀이 python, java

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

image