분류 전체보기 441

[BOJ] 백준 1012 문제 - 유기농 배추 - 파이썬

https://www.acmicpc.net/problem/1012 1012번: 유기농 배추 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 www.acmicpc.net 백준 유기농배추 문제 이다. sys.setrecurtionlimie()을 써주지 않았을때는 에러가 발생했다. RecursionError인데, 재귀말고 반목문으로 작성해봐야겠다. 만약 시간이 없어서 반복문으로 작성하지 못하였을 경우엔 sys.setrecurtionlimie()에 백만정도로 값을 세팅해주면 문제없이 돌아간다. # 0823 ~ 0858 # 백준 1012 import sys from collectio..

[Python3] 파이썬 패키지 설치 완료 후에 import 에러 발생할 경우 + could not be resolved Pylance

파이썬에서 원하는 패키지를 pip install을 통해 정상적으로 설치하였고, 성공적으로 설치하였다는 메시지도 확인했는데도 import 가 되지 않는 경우가 있다. 혹시 잘못됬나 싶어서 패키지를 지워도 보고, 다시 import문을 적어봐도 이런 경우에는 소용이 없다. 보통 pip를 해도 안되는 경우는 크게 pip버전이 안맞아서 pip를 upgrade해줘야 하는 경우, 아예 패키지명이 잘못된 경우 등이 있는데, 이 경우는 성공적으로 설치했음에도 import가 되지 않는 경우를 소개한다. 위 사진처럼 이미 잘 설치되어있음에도 from import 구문이 작동하지 않는 것이다. 바로 아래 처럼 말이다. heapdict라이브러리를 사용하기 위해 from절에 적어주었는데 노란 밑줄이 있는 것을 볼 수 있다. 살펴..

위상 정렬 (Topological Sort)의 사이클 존재 판별

위상 정렬을 공부하는 와중에 이해가 가지 않는 부분이 있는데, 긴가민가해서 정확히 눈으로 확인해보고 싶어 직접 그림으로 풀어보았다. 이해가 가지 않는 부분은 다음과 같다. 모든 원소를 방문하기 전에 큐가 빈다면 사이클이 존재한다고 판단할 수 있습니다. -> 사이클에 포함된 원소 중에서 어떠한 원소도 큐에 들어가지 못합니다. 왜 사이클에 포함된 원소는 어떤 것도 큐에 들어가지 못할까? 라는 생각이 들었는데, 머릿속으로 큐에 집어넣었다가 빼면서 하려니 중간에 실수를 할 수도 있을 것 같아서 바로 그림으로 그려보았다. 다음과 같이 사전에 준비된 그래프가 존재한다. 그리고 보면 알겠지만 (B -> D -> C -> B) 로의 사이클이 존재한다. 그럼 이제 A를 큐에 집어넣고, 간선을 삭제하면 다음과 같이 진행된..

[Dev] 데스크톱 창 관리자 GPU점유율 치솟을때 해결방법

몇달 전부터 노트북을 사용하는데, 갑자기 순간적으로 버벅이는 현상이 발견되었다. 그냥 사용중인 프로세스가 많아서 그러겠거니 라고 생각했는데, 별다른 동작을 하고 있지 않을때도 갑자기 GPU가 치솟을때가 있었다.  그래서 검색해보니 window10의 문제라고 한다. 해결법이 아주 자세하게 나와있는 링크가 있어서 아주 많은 도움을 받았다.  아래 블로그에 제시된 해결방법 중 사용한 방법을 소개하자면 다음과 같다.  https://answers.microsoft.com/ko-kr/windows/forum/all/%EA%B2%8C%EC%9E%84-%EB%98%90%EB%8A%94/a40ee4fc-13e2-4ae3-9d4c-1a366e3f2a77 게임 또는 데스크톱 창 관리자 의 그래픽(GPU) 점유율이 너무 높..

개발 정보 2021.08.03

Java vs Python3 vs C++ for coding test

아래 두 코드는 같은 문제를 자바와 파이썬으로 각각 풀어낸 것이다. (오랜만에 풀어봤다.) 이분탐색문제였는데, 이 문제 뿐만 아니라 다른 문제들도 마찬가지로 작성해야할 코드의 양에 있어서 상당한 차이를 보였다. 자신이 가장 편한 언어를 선택하라고 해서 사실 c++과 파이썬, java중 어느 것을 선택하더라도 별 반 차이가 없는 상태에서 시작했었다. 당시에는 숙련도가 모두 비슷했었다. (c++ stl의 사용법을 100프로 알고있던 상태는 아니어서 c++의 경우 숙련도가 조금은 떨어지긴 했다.) 주로 사용하는 언어가 자바여서 자바로 주로 풀이하였는데, 한 문제를 풀면서 python으로도 똑같이 풀어보는 방식으로 진행했다. 한문제를 여러언어로 바꿔서 풀어본적이 대부분이었는데, 여지껏 문제를 풀면서 느낀 점이 ..

[Java] Java의 Throwable에 대해서

1. Error클래스를 상속하는 예외 클래스 개발자가 해결할 수 없는 심각한 오류를 의미한다. 하드디스크에 물리적 오류가 생기거나, 혹은 가상머신이 오류가 발생했을 경우가 해당된다. 2. RuntimeException 클래스를 상속하는 예외 클래스 우리가 자주보는 예외클래스들이다. NPE라거나, ArrayIndexOutOfBoundsException같은 것들이 속한다. 3. Exception클래스만 상속하는 예외 클래스 가장 많은 것이 이곳에 속한다. 반드시 try catch로 잡아줘야 한다. 추가 팁: 직접정의하는 예외클래스는 모두 Exception클래스를 상속받아야만 한다.

Java 2021.07.24

[Java] Java의 가변인자? 함수에 파라미터 여러개 전달하기

파이썬에서 가변인자를 사용해서 정말 편했었는데 자바에도 이 기능이 있는지 오늘 처음알았다. 쓸일이 없어서인지 모르겠는데, 여타 다른 블로그들을 돌아다니면서도 가변인자를 쓰는 것을 한번도 못봤는데, 왜인지 모르겠다. 안쓰는 이유가 있는건지 아니면 내가 아직 많은 코드를 보지 못해서인지. 그래서 이제서야 알게된 자바 가변인자는 아주 간단하다. ... 을 사용하면 바로 사용가능하다. 바로 이런 식으로 타입뒤에 ...을 적어주면 내부에서 포이치구문으로도 처리할 수 있고, 배열처럼 사용할 수 있다. (기본적으로 배열로 처리된다고 한다. ) 생각보다 재밌는 기능들이 많네.

Java 2021.07.24

[SpringBoot] 서버 정지 시 Build cancelled while executing task 에러

가끔 스프링부트를 사용할때, 서버를 켰다가 다시 정지시켰을때 위와 같은 메시지가 뜨면서 Exception이 발생하는 경우가 있다. 코드에도 문제가 없고, 다른 여타 문제점들도 없는데 서버를 정지시킨다고 해서 빨간 문구가 잔뜩 뜨는게 좀 성가실 수 있다. 원인은 환경문제이다. gradle로 실행하게 했을 경우 발생하는 문제인데 해결법은 아주 간단하다. 윈도우의 경우 File -> Setting에 들어가면 다음과 같은 창이 뜨게 될 것이다. 그리고 여기서 밑에 보면 빨간색으로 동그라미 친 곳이 보일 것이다. 바로 여기가 Gradle로 되어 있을 경우 문제가 발생할 수 있다. 그러니 intelliJ가 실행시킬 수 있도록 설정을 바꾸어주자. 적용하고 나서 서버를 돌려도 또 똑같이 서버를 정지시키면 같은 에러가 ..

[SpringBoot] @RequiredArgsConstructor 는 정말 생성자 코드를 만들어낼까?

김영한님의 스프링 핵심 기본편강의를 보면서 lombok을 쓰면서 @RequiredArgsConstructor 을 사용하게 되었는데, 설명상으로는 필드에 final을 지정하면, 반드시 값을 지정해줘야 하니까. @RequiredArgsConstructor 라는 어노테이션이 알아서 값이 지정되야만 하는 것들을 위해서 생성자를 만들어낸다고 말씀하셨다. 과연 그럴까? (이런 의문이 든 이유는 신기해서이다... 어떻게 코드를 집어넣을 수 있는거지? ) 코드상으로 실제로 생성자가 있는 것과 정확히 일치한다고 말씀하셨다... 그래서 직접 확인해보고 싶어서 .class 파일을 디컴파일 해보았다. 디컴파일러로는 jd-gui가 가장 흔하게 쓰이는 것 같아서 다운받아서 사용했다. (그냥 검색하면 다운받는 곳이 주르르 나온다...

[Intellij] Intellij 윈도우 단축키 모음

Ctrl + D : 라인 복사 Ctrl + Y : 줄 삭제 // Ctrl + Backspace Ctrl + X : 잘라내기, 라인 삭제할때도 자주 쓴다. Ctrl + Z : 되돌리기 Ctrl + Shift + Z : 되돌리기 취소 Ctrl + Alt + 위, 아래 : 현재 선택한 라인이동 Ctrl + Alt + T : 현재 선택된 코드를 특정 코드로 감싸줌(try, {} 이런 블록단위) Alt + 위, 아래 : 블록 단위로 커서 이동 Ctrl + Home, End : 파일 가장 위, 아래로 이동 Ctrl + Shift + R, Ctrl + R : 모든 파일 내에서 바꿈, 현재 파일 내에서 바꿈 Ctrl + Shift + F : 파일내에서 검색 Ctrl + Shift + Backspace : 가장 최근에 ..

개발툴 2021.07.20

[BOJ] 백준 9094 - 수학적 호기심 - Java

오랜만에 시간이 남아서 백준 9094문제를 풀어보았다. 티어도 브론즈로 낮아서 쉽게 풀 수 있었는데, 왜인지 속도가 너무 느렸다. 그래서 계속해서 코드를 바꿔보면서 시도했는데도 코드가 너무 느려서 처음에는 반목문안에 있는 sysout 출력문이 문제라고 생각해서 StringBuilder에 결과를 모두 append 해준 다음에 반복문 밖에서 출력해주는 걸로도 바꾸었는데 소용이 없었다. 그러다가 if문 안에 있는 Math.pow(j, 2) 를 j * j 로 바꾸었더니... 결과는 위에 표를 보면 알겠지만., 1556에서 372까지 속도가 줄어들었다. 이제부터는 Math.pow 를 통해 제곱하지 말고 j*j를 통해 그냥 제곱해주자. Math.pow는 반복문안에서 함수를 계속 호출하는 셈이었으니 속도가 느릴 수 ..

[Unreal] 언리얼 엔진5 드디어 공개!

https://www.unrealengine.com/ko/blog/a-first-look-at-unreal-engine-5 언리얼 엔진 5 최초 공개 새롭게 향상된 리얼타임 렌더링 기능들을 미리 만나보세요. www.unrealengine.com 얼마전에 언리얼5가 연말에 나온다고 했는데, 그 블로그의 글을 본지 얼마 지나지 않아서 언리얼엔진5가 공개되었다. 예상보다 빨리 공개된 것 같다. 공개된영상이 (사막 영상) 예전에도 데모 영상 비슷하게 공개된 영상이었는데 이 외에 다른 영상들도 봤는데 확실히 그래픽이 훨씬 좋아진것 같다. 몇 가지 기술들도 소개되었다. 공개 영상에서 영어로 정황하게 설명해서 정확히 어떤 방식인지는 기억이 나지 않지만 나나이트라는 기술과 함께 루멘이라는 기술이 핵심인 것으로 알고 있..

Unreal Engine 2021.07.18

[SpringBoot] org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-200]

김영한님의 스프링입문 강좌를 보면서 공부하던 중 오류가 발생했다. h2데이터베이스를 이용해서 스프링부트에서 사용하려고 하는데 org.h2.jdbc.JdbcSQLInvalidAuthorizationSpecException: Wrong user name or password [28000-200] 와 같은 에러가 발생하면서 오류가 발생했다. (회원목록을 좀 확인하려고 했는데 Whitelabel Error Page가 발생하면서 원하는 결과가 나오지 않았다.) 해결 방법은 간단하다. 스프링부트 2.4부터는 데이터베이스에 커넥션을 추가할때 spring.datasource.username=sa 를 반드시 추가해줘야 한다. (아 참고로 sa는 내가 사용하는 username이다. username을 달리 적었다면 본인껄 ..

[SpringBoot] springboot 기본 세팅부터 빌드까지 요약

빌드할때는 우선 intellij에서 돌리던 서버는 꺼주고 이후에 스프링부트 해당 폴더로 가서 (cmd로 가면 된다.) start.spring.io에서 얻은 zip파일을 해체한 곳으로 가면 된다는 소리다. 맥이나 리눅스의 경우 ./gradlew build 라고 치면 된다. 윈도우는 그냥 gradlew.bat build라고 치면 된다. 그러면 build 폴더 안에 libs라는 폴더가 생기게 된다. 그 폴더안에 들어가면 이제 jar파일이 만들어져있다. 그걸 이제 java -jar hello-spring-0.0.1-SNAPSHOT.jar 이런 식으로 써줘서 실행시키면 잘 실행되는 것을 확인할 수 있다. 만약 잘 안되면 ./gradlew clean build라고 치면 된다. clean 하고 다시 하는거다.

[BOJ] 백준 5555 - 반지 - Java 풀이

괜히 char배열로 받아서 하나씩 비교하다가 빙빙 돌고서야 제대로된 해답을 찾았다. 원형으로 연결하는 것을 굳이 인덱스로 원형으로 따지기 보다는 그냥 output을 하나 더 더해서 원형처럼 효과를 내주는 것이 좋다는 것을 뒤늦에 알았다. 쉽게 말하면 그냥 하나의 String에서 검사해야한다면 그걸 원형으로 돌기 위해서 인덱스를 가지고 연산하는 둥의 고생을 하지 말고 그냥 String 복사본을 뒤에 붙여주는거다. "Hello" + "Hello" = "HelloHello" 가 되는거다. 여기서 돌면 원형으로 도는 것과 비슷한 효과를 얻을 수 있다. 이게 더 간결하다. 그리고 난 뒤에 contains를 이용해서 해당 키워드가 받은 문자열에 존재하는지만 확인하면 되는거다. import java.io.Buffer..

RadixSort(기수정렬) 에서는 왜 낮은 자리수부터 비교해야 하는걸까

제목과 동일한 질문을 교수님께 여쭤본 적이 있다. 답변은 아주 간단했는데, " MSD부터 정렬하게 되면 정렬이 되지 않습니다. " 였다. 사실 직접 해봤어야 했는데, 그 간단한 과정을 해보지 않고 질문을 해서 지금 생각해보니 조금 멍청한 질문이 아니었나 생각이 든다. 질문할 당시에는 왜 굳이 낮은 자리수부터 비교해야하는가에 대해 생각해보면서 낮은 자리수부터 비교한다면 A, B가 있다고 가정할때 A의 MSD가 B의 MSD보다 큼에도 불구하고 낮은 자리수부터 비교하면서 자리수를 거슬러 올라가는 과정에서는 그 사실을 알지 못함으로 A가 B보다 큼에도 계속해서 낮은 자리수를 비교함으로써 그것이 낭비라고 생각했다. 반면에 MSD부터 비교한다면 처음 비교할때부터 이미 A가 B보다 큼이 기정사실이 되어버리니 그 밑의..

[C] void main(), int main(), main() 차이점

세 형태의 차이점에 대해 이야기해보고자 한다. 사실은 별 차이 없다고 한다. 간략하게 정리하자면 아래와 같다. 함수 정의 앞에 붙은 데이터 형은 함수의 리턴값의 데이터 형이고 int main()이면 main()함수가 종료할때 정수형 값을 리턴하겠다는 뜻이다. void main() 이면 함수가 종료할때 아무 값도 리턴하지 않겠다는 뜻이다. 그리고 그냥 main()은 void main()과 같다고 한다. main() 함수는 프로그램의 엔트리 포인트이고 운영체제가 실행시켜주는 함수라고 한다. 그래서 main() 함수의 리턴값은 운영체제가 받아보게 된다고 한다. 운영체제는 프로그램이 종료할때 main() 함수의 리턴값을 받고 이를 통해 프로그램이 왜 종료되었는지 판단한다고 한다. 보통 main()이 0을 리턴하..

C & C++/C 2021.07.03

[Linux] 우분투에서 비어있지 않은 폴더 삭제하기 - Directory not empty

폴더를 삭제하려고 하는데 Directory not empty 가 발생했다. 지우려는 폴더 안에 뭔가 여러개가 들어있단 소리다. 폴더든 파일이든 뭐가 있다는 소리다. 안이 비지 않아서 삭제 못한다고 하는데 이럴때는 sudo rm -r [폴더이름] 이렇게 작성해주면 삭제할 수 있다. (참고로 -r 의 r은 recursive의 의미이다. 깊게 돌면서 들어가서 다 지워나가겠다는 거다. 아마 실제 구현도 디렉토리 트리 구조 내에서 recursive한 방식으로 순회하면서 뒤로 돌아나오면서 삭제하지 않을까 싶다. 어떻게 구현된지는 잘 모르겠지만 아마 실제 그렇게 구현해도 아무 문제 없이 동작할거다.) https://noosphere.tistory.com/90 [linux]비어있지 않은 폴더 지우는 방법 에러 rmdi..

Linux 2021.06.27

[Python3] window10 Ubuntu에서 Miniconda3 설치하기 - 파이썬 가상환경 구축

https://ychae-leah.tistory.com/78 [ubuntu] 윈도우10 에서 우분투 설치 및 윈도우 폴더 접근하기 1) 윈도우 제어판 설정 바꾸기 제어판 프로그램 추가/제거 -> windows 기능 켜기/끄기 -> Linux용 Windows 하위 시스템 체크 -> 재부팅 2) MicrosoftStore에서 Ubuntu 설치하기 우분투 설치 경로 C:\User.. ychae-leah.tistory.com 위 블로그에서 도움을 많이 받았다. 감사합니다. 1시간 삽질하다가 발견했다. cd /mnt 이 명령어 하나를 몰라서 너무 헤맸다. cd /mnt 를 하게 되면 윈도우10에 설치한 우분투 커널을 통해서도 윈도우 10 디렉토리에 접근할 수 있다. https://docs.conda.io/en/l..

알고리즘 스터디

Recursive Call Algorithm (재귀 함수)Permalink Maximum value or Minimum value (최대값 또는 최소값 찾기) : 가장 큰 숫자를 기억해가며 진행함 Euclid (유클리드 알고리즘) : 두 정수의 최대공약수(GCD)를 빠르게 구하기 Factorial (팩토리얼) Fibonacci (피보나찌 수열) Sum (합계) Sorting Algorithm (정렬 알고리즘)Permalink Selection Sort (선택 정렬) https://www.daleseo.com/sort-selection/ Bubble Sort (버블 정렬) https://www.daleseo.com/sort-bubble/ Quick Sort (퀵 정렬) https://www.daleseo...

[Python3] Python3와 PyPy3 차이

PyPy3는 자주 쓰이는 코드를 캐싱함. 간단한 코드 상에서는 Python3가 메모리, 속도 측면에서 우세 복잡한 코드(반복)을 사용하는 경우에는 PyPy3가 우세하다. 이 상황에 맞추어서 잘 써야 한다. 아래 블로그에서 많은 도움을 받았습니다. 감사합니다. https://ralp0217.tistory.com/entry/Python3-%EC%99%80-PyPy3-%EC%B0%A8%EC%9D%B4 Python3 와 PyPy3 차이 Python3 와 PyPy3 차이 평소에 알고리즘 문제를 풀면서 Python을 지원하는 언어를 선택할 때, Python3와 PyPy3가 대표적으로 있었다. 원래 알던 개념은 PyPy3가 Python3의 실행시 시간이 매우 오래 걸린다는 ralp0217.tistory.com

Python3 2021.06.22
반응형