전체 글
-
[이펙티브 자바] 불필요한 객체 생성을 피하라개발 공부/자바 2022. 1. 27. 21:31
똑같은 객체를 매번 생성하는 것은 불필요하다. 객체 하나를 재사용 하는 것이 더 나을 때가 있다. 다음 코드로 예를 들어보았다. 코드 public class Hi { public static void main(String[] args) { String str1 = new String("sangjin"); String str2 = new String("sangjin"); System.out.println(str1 == str2); System.out.println(str1.equals(str2)); } } 값 false true 다음과 같이 똑같은 문자열을 사용해도 new를 이용하여 스트링의 인스턴스를 만들어버리면 똑같은 기능을 하는 불필요한 스트링 인스턴스만 많아질 뿐이다. 여기서 new만 없애도 코드 ..
-
[이펙티브 자바] 아이템 1. 생성자 대신 정적 팩터리 메서드를 고려하라개발 공부/자바 2022. 1. 13. 00:32
개념 정적 변수는 프로그램이 종료되기 전까지 메모리가 유지되는 변수이다. 정적 팩터리 메서드는 팩토리 패턴에서 유래한 단어로 객체 생성의 역할을 분리해주는 메서드이다. 장점 1. 이름을 가질 수 있다 생성자는 클래스의 이름을 따르기 때문에 메서드를 사용하여 이름을 지을 수 있다는 장점이 있다. 또한 이름을 가질 수 없기 때문에 생성자는 똑같은 타입을 2개 만들 수 없는 단점도 가지고 있다. 다음을 보면 정적 팩터리 메서드는 이름을 각각 다르게 지어 똑같은 타입을 받을 수 있다는 것을 알 수 있다. HTML 삽입 미리보기할 수 없는 소스 2. 호출될 때 마다 인스턴스를 생성하지 않아도 된다 생성자는 항상 인스턴스를 생성해야 하지만 정적 팩터리 메서드는 다시 호출될 때 메모리에 남아있는 인스턴스를 사용하기 ..
-
백준 1251번 단어 나누기BOJ 문제 풀이 2020. 11. 18. 17:30
1234567891011121314151617l = input()c = []a = 0w = ""for i in range(1, len(l)-1): w1 = l[0:i] a = a + 1 for a in range(i+1, len(l)): w2 = l[i:a] w3 = l[a:len(l)] c.append([w1[::-1], w2[::-1], w3[::-1]]) for q in range(len(c)): c[q] = "".join(c[q]) c = sorted(c, key=str.lower)print(c[0])Colored by Color Scriptercs파이썬의 문자열 슬라이싱과 문자열 뒤집기를 한 후 리스트로 묶었다. 문자열 안에서 다른 문자열과 섞이지 않게 이차원 리스트를 추가하는 식으로 구분을 주..
-
백준 1086번 박성원 (못품)BOJ 문제 풀이 2020. 11. 17. 17:51
12345678910111213141516171819202122232425262728293031from itertools import permutations N = int(input()) count = 0 l = [] for i in range(N): l.append(input()) K = int(input()) l = list(map(''.join, permutations(l))) for a in range(len(l)): if int(l[a]) % K == 0: count += 1 print(count, len(l)) if len(l) % count == 0: print("1" + "/" + str(len(l) // count)) else: print(str(count) + "/" + str(len(..
-
백준 1152번 단어의 개수BOJ 문제 풀이 2020. 11. 17. 17:47
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 a = input().split(" ") if a[0] == "" and a[len(a) - 1] == "": print(len(a) - 2) elif a[len(a) - 1] == "": print(len(a) - 1) elif a[0] == "": print(len(a) - 1) else: print(len(a)) cs 스플릿 공백으로는 입력받은 문자열 앞과 문자열 뒤에 있는 공백이 잘리지 않는다. 그래서 나는 조건문으로 경우를 나누어서 리스트의 개수를 출력하여 풀었다. www.acmicpc.net/problem/1152 1152번: 단어의 개수 첫 줄에 영어 대소문자와 띄어쓰기로 이루어진 문자..
-
리눅스 도커 자주쓰는 명령어 모음잡다 2020. 11. 5. 00:57
요즘 도커에서 제가 자주 사용하는 명령어들을 정리했습니다. 도커 설치 $ curl -s https://get.docker.com | sudo sh docker import tar 형식의 파일을 도커 이미지로 변환한다. docker start 도커를 실행한다. docker stop 도커를 멈춘다. docker rm 도커를 지운다. docker attach 도커에 들어간다. docker images 도커 이미지 목록을 본다. docker tag 이미지 id에 이름을 붙여준다. 보통 으로 쓰이는 듯 하다. ex) ubuntu:18.04 docker ps -a 컨테이너 목록 및 정보를 본다. docker run 도커를 생성한다. -p : 생성할 때 도커의 내부 포트와 외부 포트를 지정해주는 옵션 --name :..
-
PyQt5를 이용하여 파일 경로를 디렉터리로 선택하기잡다/파이썬 2020. 11. 3. 23:33
class FilePath(QDialog): def __init__(self): super().__init__() self.title = 'File Path' self.left = 10 self.top = 10 self.width = 640 self.height = 480 self.initUI() def initUI(self): self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) def directory_select(self): options = QFileDialog.Options() directory_path = QFileDialog.getExistingDirectory(self, "s..