hyundho12의 등록된 링크

키자드에 등록된 총 120개의 포스트를 확인하실 수 있습니다.

Naver Blog

카펫

문제 설명 Leo는 카펫을 사러 갔다가 아래 그림과 같이 중앙에는 노란색으로 칠해져 있고 테두리 1줄은 갈색으로 칠해져 있는 격자 모양 카펫을 봤습니다. Leo는 집으로 돌아와서 아까 본 카펫의 노란색과 갈색으로 색칠된 격자의 개수는 기억했지만, 전체 카펫의 크기는 기억하지 못했습니다. Leo가 본 카펫에서 갈색 격자의 수 brown, 노란색 격자의 수 yellow가 매개변수로 주어질 때 카펫의 가로, 세로 크기를 순서대로 배열에 담아 return 하도록 solution 함수를 작성해주세요. 제한사항 갈색 격자의 수 brown은 8 이상 5,000 이하인 자연수입니다. 노란색 격자의 수 yellow는 1 이상 2,000,000 이하인 자연수입니다. 카펫의 가로 길이는 세로 길이와 같거나, 세로 길이보다 깁니다. 입출력 예 brown yellow return 10 2 [4, 3] 8 1 [3, 3] 24 24 [8, 6] def solution(brown, yellow): answer

Naver Blog

[스프링부트] invalid source release: 11&& Reason: Failed to determine a suitable driver class 오류

start.spring.io 에서 자바 버젼을 11로 하고 배포툴을 gradle 설정후 로컬에 셋팅 후 실행시 발생 원인 gradle의 jvm 설정이 11이하 버젼인데 bulid.gradle에 sourceCapatibility 설정이 11로 설정되어있어서 발생 해결 1. Setting 수정 1-1 Build,Execution,Deployment -> Jre : 11 2. Project Structure 수정 2-1 project Project SDK : 11로 수정 2-2 SDKs JDK home path 11로 수정 Reason: Failed to determine a suitable driver class 1 원인 - 데이터베이스을 사용하기 위한 dependency가 존재하는 경우 @SpringBootApplication에서 자동으로 데이터베이스 값을 설정하려고 시도하지만 사용자는 데이터베이스 값을 입력을 안했기에 발생하는 에러입니다. 2 해결방안 2- 1 DataSourceAu

Naver Blog

@RunWith(SpringRunner.class), @SpringBootTest

Junit4에서 단위테스트을 할때 사용된다. @RunWith(SpringRunner.class) 사용하는 이유? - @RunWith(SpringRunner.class)를 사용한다면, @Autowired, @MockBean에 해당되는 것들에만 application context를 로딩하게되므로 Junit4에서는 필요한 조건에 맞춰서 @Runwith(SpringRunner.class)를 사용합니다. - Junit5에서는 ExtendWith(MyExtension.class)을 사용해야한다. RunWith을 지원하지않음. @SpringBootTest - 통합 테스트를 위해 전체 애플리케이션 Context를 로드하는데 사용된다. - @SpringbootTest 주석은 전체 컨테이너를 부트스트랩해야 할때 사용할 수 있다. 주석은 테스트에서 활용될 ApplicationContext를 생성하여 작동합니다.

Naver Blog

정적 팩토리 메서드

정적 팩토리 메서드 (Static Factory Method) 란? - 객체 생성의 역할을 하는 클래스 메서드 이다. 생성자을 통해 객체를 생성하는 것이 아닌 메서드를 통해 객체을 생성하는것이다. 생성자 대신 정적 팩토리 메서드을 사용하는 이유는 ? 1. 생성자와 달리 자기 이름을 가질 수 있다. 2. 생성자와 달리 호출될 때마다 매번 새로운 객체를 생성할 필요가 없다. 3. 하위 자료형 객체를 반환활수 있다. 4. 객체 생성을 캡슐화할 수있다.

Naver Blog

자바 가변인자 ...

매개변수의 개수를 동적으로 지정해 줄 수 있게 되었는데 이 기능을 가변인자(variable argument)라고 한다. 가변인자 사용법 키워드 ... 을 사용한다. void sum(String... str){ for(String a:str){ System.out.println(a); } } 타입... 변수명으로 사용한다. 가변인자 사용시 주의사항 1. 가변인자는 여러개 사용될수 없다. 그리고 가변인자는 항상 파라미터 마지막에 있어야 한다. 2. 가변인자를 사용하게 되면 인자를 넣지 않아도 정상적으로 실행된다.

Naver Blog

JPA 양방향 연관관계

https://github.com/namjunemy/TIL/blob/master/Jpa/tacademy/img/07_jpa_relational2.PNG?raw=true - Team을 통해서도 getMemberList()로 특정 팀에 속한 멤버 리스트를 가져오고 싶다. - DB는 단방향 매핑때와 변화가 없다. 둘을 Join 을 하면 되기때문이다. DB는 방향이 없다. @Entity public class Member{ @Id @GeneratedValue @Column(name = "MEMBER_ID") private Long id; @Column(name = "USERNAME") private String username; private int age; @ManyToOne @JoinColumn(name = "Team_ID") private Team team; } @Entity public class Team{ @Id @GeneratedValue @Column(name = "TEAM_I

Naver Blog

리다이렉트 (Redirect)

HTTP Redirect란? 리다이렉트란 Re(다시) direct(지시하다) 다시 지시하는 것이다. 예를들어 브라우저가 www.test1.com URL을 웹 서버에 요청했을때, 서버는 HTTP 응답메세지을 통해 www.test2.com 으로 다시 요청하라고 브라우저에게 다른 URL(길, 방향)을 지시 한다. Redirect 필요한 경우 - 기존의 페이지의 주소가 새롭게 변경된 경우 - 불필요하거나 잘못된 서브주소을 하나로 이동시키는 경우 - 로그인,인증 등의 목적으로 다른 주소로 이동이 필요한 경우 301,302 Redirect차이 - 301 Redirect : 영구적인 방법으로 Redirect로 서버사이드 방법의 이동 - 302 Redirect : 일시적인 방법으로 Redirect로 스크립트나 html태그을 이용한 방법

Naver Blog

변경감지 와 병합(merge)

준영속 엔티티? - 영속성 컨텍스트가 더는 관리하지 않는 엔티티을 말한다. 준영속 엔티티을 수정하는 2가지 방법 - 변경감지 기능사용 - 병합(merge) 사용 변경감지 기능사용 트랜잭션 안에서 엔티티을 다시 조회,변경할 값 선택 -> 트랜잭션 커밋 시점에 변경감지(Dirty Checking)이 동작해서 데이터베이스에 UPDATE SQL 실행 병합사용 책 자바 ORM 표준 JPA 프로그래밍 병합 동작 방식 1. merge()를 실행한다. 2. 파라미터로 넘어온 준영속 엔티티의 식별자 값으로 1차 캐시에서 엔티티을 조회한다. 2-1 만약 1차 캐시에 엔티티가 없다면 데이터베이스에서 엔티티을 조회하고 1차캐시에 저장한다. 3. 조회한 영속 엔티티(mergeMember)에 member 엔티티 값을 채워 넣는다. (member 엔티티의 모든 값을 mergeMember에 밀어 넣는다. 이때 mergeMember의 회원1 이라는 이름이 "회원명변경"으로 바뀐다) 4. 영속 상태인 mergeMe

Naver Blog

Stack, Queue, Heap의 구조와 메모리 영역

Stack stack은 LIFO(Last in First Out) 구조다. 제일 처음 들어간 데이터는 제일 마지막에 나온다. Queue queue는 FIFO(First in First Out) 구조다. 데이터가 들어간 순서대로 나온다. Heap Heap은 완전 이진트리 형식이다. 위에서 아래로 왼쪽에서 오른쪽으로 데이터가 채워진다. Heap은 부모노드가 자식 노드보다 무조건 큰 완전이진트리 최대 힙, 부모노드가 자식 노드보다 무조건 작은 완전이진트리로 최소 힙으로 구분된다. Code Area - 프로그래머가 작성한 코드가 실행되는 영역이다. Data Area - 전역변수가 정적(Static)변수가 저장되는 영역이다. 프로그램이 시작되면 할당되며 프로그램이 종료되면 소멸한다. Heap Area - 사용자가 직접관리하는 메모리 영역으로, 동적 메모리 영역이라고 불린다. 낮은주소에서 높은 주소로 할당되는 것이 특징이다. 이 영역은 사용자가 직접 메모리를 할당하고 해재해 주어야 하는 불편함

Naver Blog

Python startswith() 사용법

string = "hello world!"; print(string.startswith(hello)); True 값 반환 string = "hello world!"; print(string.startswith(Hello)); False 값 반환 - 대소문자을 구분하고 True, False로 값을 반환. String1.startswith(String2) // String2가 String1의 접두어인지를 찾아주는 기본함수이다.

Naver Blog

Pyhon Array[::] 사용법

arr[::], arr[1:2:3] arr[-1] 등으로 배열의 index에 접근하는 것을 Extended Slices라고 부릅니다. arr[A:B:C] 는 index A 부터 index B 까지 C의 간격으로 배열을 만들어라는 말입니다. 만약 A가 None 이라면 처음부터 라는 뜻이고, B가 None이라면, 할수 있는데까지 C가 None 이라면 한 칸 간격으로 라는 뜻입니다. arr = [0,1,2,3,4,5,6,7,8,9] arr[::2] 처음부터 끝까지 두칸 간격으로 [0,2,4,6,8] arr[1::2] index 1부터 끝까지 두 칸 간격으로 [1,3,5,7,9] arr[::-1] 처음부터 끝까지 -1칸 간격으로(역순으로) [9,8,7,6,5,4,3,2,1,0] arr[::-2] 처음부터 끝까지 -2칸 간격으로(역순, 두칸간격으로) [9,7,5,3,1] arr[3::-1] index 3부터 끝까지 -1칸 간격으로(역순으로) arr[1:6:2] index 1부터 6까지 두칸

Naver Blog

전화번호 목록

1. 문제 설명 (출처 : 프로그래머스, 원 출처) 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 제한사항 phone_book의 길이는 1 이상 1,000,000 이하입니다. 각 전화번호의 길이는 1 이상 20 이하입니다. 같은 전화번호가 중복해서 들어있지 않습니다. 입출력 예 phone_book return ["119", "97674223", "1195524421"] false ["123","456","789"] true

Naver Blog

Python 문자열 정렬에 대하여

파일 이름이 포함된 문자열 목록이 있다. flist = ['0.png','10.png', '3.png', '4.png', '100.png'] flist.sort() print(flist) 결과 ['0.png', '10.png', '100.png', '3.png', '4.png'] 문자열은 정렬을 할때 사전 순으로 정렬이 된다. 그러므로 "10"이 "3" 보다 앞에 온다. 아래와 같이 실행하면 flist.sort(key=lambda fname: int(fname.split('.')[0])) - 오름차순으로 정렬된다. ['0.png', '3.png', '4.png', '10.png', '100.png'] https://stackoverflow.com/questions/52737587/sorting-a-list-of-strings-numerically Sorting a list of strings numerically I have a list of strings with my filena

Naver Blog

Python 내장함수 zip

두 그룹의 데이터를 서로 엮어주는 파이썬의 내장함수 zip()에 대해서 알아보자. zip zip() 함수는 여러 개의 순회 가능한(iterable) 객체를 인자로 받고, 각 객체가 담고 있는 원소를 터플의 형태로 차례로 접근할 수 있는 반복자(iterator)를 반환합니다 >>> numbers = [1, 2, 3] >>> letters = ["A", "B", "C"] >>> for pair in zip(numbers, letters): ... print(pair) ... (1, 'A') (2, 'B') (3, 'C') zip() 함수를 활용하면 여러그룹 데이터을 루프을 한번만 돌면서 처리가 가능. 아래에서 3개의 문자열내의 글자을 하나씩 병렬해서 출력하고 있습니다. >>> for number, upper, lower in zip("12345", "ABCDE", "abcde"): ... print(number, upper, lower) ... 1 A a 2 B b 3 C c 4 D d

Naver Blog

Java 클래스, 객체, 인스턴스의 차이

클래스, 객체, 인스턴스의 개념 클래스(Class)란 - 객체을 만들어내기 위한 설계도 혹은 틀 - 연관되어 있는 변수와 메서드의 집합 객체란 - 구현할 대상 - 클래스에 선언된 모양 그대로 생성된 실체 인스턴스(Instance)란 - 설계도을 바탕으로 구현된 구체적인 실체 - 객체을 실체화하면 그것을 인스턴스라고 부른다. - 실체화된 인스턴스는 메모리에 할당된다. public class Animal{ // 클래스 ... } public class Main{ public static void main(String[] args){ Animal cat, dog; // 객체 //인스턴스화 lion = new Animal(); // lion은 Animal 클래스의 인스턴스(객체을 메모리에 할당) tiger = new Animal(); } }

Naver Blog

Framework vs Library

프레임워크 (Framework)란 - 소프트웨어의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하도록 일련의 협업화된 형태로 클래스들을 제공하는 것 - 랄프 존슨- 프레임워크 vs 라이브러리 프레임워크란 - 프로그램의 구체적인 부분에 해당하는 설계와 구현을 재사용이 가능하도록 협업화된 형태로 제공하는 소프트웨어이다. ex) 자동차 프레임, 기본적으로 구성하고 있는 뼈대 라이브러리란 - 개발자가 개발하는데 필요로한 도구들을 나열해놓은것으로 필요할때 호출가능, 미리 작성한 코드, 함수, 클래스등이 포함. ex) 자동차의 기능하는 부품

Naver Blog

Java == equals() 차이

== 항등 연산자 이다. 두 객체가 같은 메모리 공간을 가리키는지 확인한다. 같은 주소면 return true, return false equals() 객체 비교 메서드(Method)이다. 두 객체의 값이 같은지 확인한다. 문자열 데이터/내용을 기반으로 비교한다. public class Test { public static void main(String[] args) { String s1 = new String("Hello world"); String s2 = new String("Hello world"); Thread s3 = s1; // 같은 대상을 가리킨다. String s4 = new String("java"); /* --print-- */ System.out.println(s1.equals(s2)); // true System.out.println(s1.equals(s3)); // true System.out.println(s3.equals(s4)); // false } }

Naver Blog

Web Server vs WAS(Web Application Server)의 차이

Static Pages와 Dynamic Pages 1. Static Pages Web Server는 파일 경로 이름을 받아 경로와 일치하는 file contents를 반환한다. 항상 동일한 페이지를 반환한다. Ex) image,html, css, javascript 파일과 같이 컴퓨터에 저장되어 있는 파일들 2. Dynamic Pages 인자의 내용에 맞게 동적인 contents를 반환한다. 즉, 웹 서버에 의해서 실행되는 프로그램을 통해서 만들어진 결과물 Servlet : WAS 위에서 돌아가는 Java Program 개발자는 Servlet에 doGet()을 구현한다. Web Server Web Server의 개념 소프트웨어와 하드웨어로 구분된다. 1) 하드웨어 - Web 서버가 설치되어 있는 컴퓨터 2) 소프트웨어 - 웹 브라우저 클라이언트로부터 HTTP 요청을 받아 정적인 컨텐츠를(.html .css .jpeg) 제공하는 컴퓨터 프로그램 Web Server의 기능 HTTP 프로

Naver Blog

JPA mappedBy 사용법

mappedBy 옵션은 객체관 양방향 연관관계일때 사용한다. 연관관계의 주인은 mappedBy을 사용하지 않고 반대쪽 객체에서 사용한다. @Entity @Table(name="team") public class Team { @Id @Column(name="team_id") private long id; @OneToMany(mappedBy="team") private List<Member> members; } @Entity @Table(name="member") public class Member { @Id @Column(name="member_id") private long id; @ManyToOne @JoinColumn(name="team_id") private Team team; } Owner 그럼 주인은 어떻게 정하는 좋은 방법은?? 1. FK가 있는 곳을 주인으로 한다. 2. 설계는 단방향으로 하되, 반대로 접근이 필요해진 곳에 양방향을 추가하는 식으로 코드를 작성한다.

Naver Blog

Spring Data JPA 연관관계 편의 메서드

연관관계 편의 메서드 양방향 연관관계를 맺을 때에는, 양쪽 모두 관계를 맺어주어야 한다. 사실 JPA 입장에서는 외래키관리자(연관관계의 주인)쪽에만 관계를 맺어준다면 정상적으로 조회가 가능하다. Team team1 = new Team("Team1", "pookyTeam"); em.persist(team1); Member member1 = new Member("Member1","pooky"); member1.setTeam(team1); // 연관관계 설정 member1 -> team1 Team team1 = new Team("Team1", "pookyTeam"); em.persist(team1); Member member1 = new Member("Member1","pooky"); member1.setTeam(team1); // 연관관계 설정 member1 -> team1 team1.getMembers().add(member1) // 연관과녜 설정 team1 -> member1 pub

1 2