문자열 묶기 https://school.programmers.co.kr/learn/courses/30/lessons/181855 문제 설명 문자열 배열 strArr이 주어집니다. strArr의 원소들을 길이가 같은 문자열들끼리 그룹으로 묶었을 때 가장 개수가 많은 그룹의 크기를 return 하는 solution 함수를 완성해 주세요. 제한 사항 1 ≤ strArr의 길이 ≤ 100,000 1 ≤ strArr의 원소의 길이 ≤ 30 strArr의 원소들은 알파벳 소문자로 이루어진 문자열입니다. 입출력 예 strArr result ["a","bc","d","efg","hi"] 2 풀이 1. 정답으로 리턴할 정수형 변수 answer를 0으로 초기화한다. 2. 100001개의 정수형 배열 변수 countArr을..
지난 글에 이어서 이번에는 엔티티를 Dto로 변환하여 응답을 내려주는 것을 할 것이다. 01. 코드 작성 다음과 ordersV2 를 작성한다. @GetMapping("/api/v2/simple-orders") public List ordersV2() { List orders = orderRepository.findAllByString(new OrderSearch()); List result = orders.stream() .map(o -> new SimpleOrderDto(o)) // order를 dto로 변환함 .collect(Collectors.toList()); return result; } @Data static class SimpleOrderDto { private Long orderId; pr..
API 개발 고급 에서는 주문 + 배송정보 + 회원을 조회하는 API를 만들 것이다. 지연 로딩 때문에 발생하는 성능 문제를 해결하는 것이 목표이다. Order - Member 는 ManyToOne, Order - Delivery 는 OneToOne 이다. 여기에서는 @XToOne에 대한 성능 최적화를 위한 과정을 진행한다. Order - OrderItem은 OneToMany이며 Collection 형태로, 나중에 진행한다. 00. 컨트롤러 작성 요청을 받아 처리할 컨트롤러를 작성하자. @RestController로 Json 형태로 객체 데이터를 반환함을 명시한다. @RequiredArgsConstructor 로 final 필드인 orderRepository를 주입받는다. @RestController @..
암호 설명 현수는 영희에게 알파벳 대문자로 구성된 비밀편지를 매일 컴퓨터를 이용해 보냅니다. 비밀편지는 현수와 영희가 서로 약속한 암호로 구성되어 있습니다. 비밀편지는 알파벳 한 문자마다 # 또는 *이 일곱 개로 구성되어 있습니다. 만약 현수가 "#*****#"으로 구성된 문자를 보냈다면 영희는 현수와 약속한 규칙대로 다음과 같이 해석합니다. 1. "#*****#"를 일곱자리의 이진수로 바꿉니다. #은 이진수의 1로, *이진수의 0으로 변환합니다. 결과는 "1000001"로 변환됩니다. 2. 바뀐 2진수를 10진수화 합니다. "1000001"을 10진수화 하면 65가 됩니다. 3. 아스키 번호가 65문자로 변환합니다. 즉 아스크번호 65는 대문자 'A'입니다. 참고로 대문자들의 아스키 번호는 'A'는 6..
00. 컨트롤러 작성 요청을 받아 처리할 컨트롤러를 작성하자. @RestController로 Json 형태로 객체 데이터를 반환함을 명시한다. @RequiredArgsConstructor 로 final 필드인 memberService를 주입받는다. @RestController @RequiredArgsConstructor public class MemberApiController { private final MemberService memberService; } 01. 회원 등록 API 가장 간단한 형태의 API를 만들어 보자. MemberApiController 클래스 내에 saveMemberV1를 다음과 같이 작성하였다. @PostMapping("/api/v1/members") public Member..
작성 개요 현재, 인프런에서 김영한님의 실전! 스프링 부트와 JPA 활용1 - 웹 애플리케이션 개발 강의를 듣고 있다. 자바 ORM 표준 JPA 프로그래밍 - 기본편 에서 들은 내용을 기본으로 하는 강의라서 복습할 겸, 내가 제대로 내용을 이해하고 있는지 정리할 겸 작성을 시작하게 되었다. 01. @Getter 와 @Setter에 관하여 예제에서는 엔티티 클래스에 Getter, Setter를 모두 열어두었다. 실무에서는 Getter 열어두고, Setter는 꼭 필요한 경우에만 사용하는 것을 추천한다고 한다. 실무에서 엔티티 데이터는 조회할 일이 많으므로 Getter는 열어두는 것이 편리하다. Getter는 단순히 데이터를 호출하는 것이므로 호출하는 것 자체만으로 어떤 일이 발생하지 않는다. 하지만 Set..
문자열 압축 설명 알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는 경우 반복되는 문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하는 프로그램을 작성하시오. 단 반복횟수가 1인 경우 생략합니다. 입력 첫 줄에 문자열이 주어진다. 문자열의 길이는 100을 넘지 않는다. 출력 첫 줄에 압축된 문자열을 출력한다. 예시 입력 1 KKHSSSSSSSE 예시 출력 1 K2HS7E 예시 입력2 KSTTTSEEKFKKKDJJGG 예시 출력2 KST3SE2KFK3DJ2G2 풀이 내가 푼 방법은 다음과 같다. 0. 정답으로 리턴할 문자열 변수인 answer를 선언한다. StringBuilder도 생성한다. 1. 입력받은 문자열을 문자 배열로 바꾼다. 현재 위치의 문자가 몇 번 나왔는..
가장 짧은 문자거리 설명 한 개의 문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리를 출력하는 프로그램을 작성하세요. 입력 첫 번째 줄에 문자열 s와 문자 t가 주어진다. 문자열과 문자는 소문자로만 주어집니다. 문자열의 길이는 100을 넘지 않는다. 출력 첫 번째 줄에 각 문자열 s의 각 문자가 문자 t와 떨어진 거리를 순서대로 출력한다. 예시 입력 teachermode e 예시 출력 1 0 1 2 1 0 1 2 2 1 0 풀이 이 문제의 핵심은 왼쪽부터 탐색한 후, 오른쪽으로부터도 탐색해야 한다는 것이다. 문자열은 다음과 같은 상태이다. 1. 정답으로 리턴할 정수형 배열을 선언하고 문자열의 길이만큼의 크기를 할당한다. 변수 p를 아주 큰 수로 둔다. 여기서는 1000으로..