![[Programmers] 17679 프렌즈4블록 (C++)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FTPYFt%2FbtsPdgTNii0%2FAAAAAAAAAAAAAAAAAAAAADNFS_2jLJyUtKbVPQgtwFpHe7IshlZCzep4AhPr2a35%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DGTS%252F1XpAcHJ8339BNnaEeeReOtI%253D)
문제https://school.programmers.co.kr/learn/courses/30/lessons/17679?language=cpp 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr애니팡이 생각나는 문제. 풀이구현 문제어떻게 쉽게 구현할 것인가…에 대한 식견1) 처음 생각한 풀이board를 순회하며 2x2에 모두 같은 값이 있는지 판단같은 값이 존재하는 경우 board에 표시대문제→소문자로 변경바꿀 때마다 cnt로 체크하기cnt가 0이면 바꿀 값이 없다는 의미므로 종료![문제] 이후 순회할 때 겹치는 문자 예외 존재!삭제삭제시 소문자들 모두 X로 바꾸기아래에서부터 순회하며 삭제한 칸인 경우 위에서 밀기바..
문제https://school.programmers.co.kr/learn/courses/30/lessons/1844 프로그래머스SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀이문제를 읽으면 Flood fill을 사용하는 문제임을 알 수 있다. 잠시 Flood fill을 알아보면,Flood fill이란? 2차원 배열(혹은 다차원 배열)에서 주어진 시작점과 연결된 영역 전체를 찾아서 특정 값(색상 등)으로 바꾸는 알고리즘 Flood fill을 이용한 BFS의 기본적인 예제 문제이다. (0, 0)에서 (n-1, m-1)까지의 최단 경로를 찾아야 한다. 프로그래머스 특성상 다음의 처리만 잘 해주면 된다.방문할 수 없는 경우 -..
![[BOJ] 2178 미로 탐색 (C++)](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbHjX68%2FbtsPbMdKtMP%2FAAAAAAAAAAAAAAAAAAAAAJxBpkd2f1FnBVWRQ7P0AUqB2MImLpI2XJFNoQSAhQ63%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DByEuQuJuIF6iP7xjGN871zpo6j0%253D)
문제https://www.acmicpc.net/problem/2178 풀이사실 이 문제는 BFS의 기본 문제입니다. BFS가 처음이신 분들은 이 문제를 예제삼아 알고리즘의 정당성을 공부하면 좋습니다. 행렬에서 특정 점까지의 최단 경로를 구하는 문제이다. BFS를 이용하면 특정 점까지의 최단 경로가 보장되므로 방문 가능한 좌표들을 중심으로 BFS를 수행하면 된다.que에 {0, 0}을 추가하여 시작점으로 설정상하좌우를 확인하며 방문 가능한 경우(아래 조건 만족하는 경우)에 대해서만 방문 진행방문 체크가 안되어 있어야 함값이 0이 아니어야 함범위 안에 존재해야 함que에서 꺼낸 현재 좌표가 {N-1, M-1}일 때까지 반복한다. 코드#include#include#define IN(Y, X) (Y = 0 &&..
![[AWS] CLF-C02(AWS Cloud Practioner)합격 후기 및 효율적인 공부 방법](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FbeM5ZS%2FbtsLV5nLnpj%2FAAAAAAAAAAAAAAAAAAAAAFmN86pStm_TrfF_9FtqVThuymdIh8ZaSefpeSenqBIX%2Fimg.png%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DwIlylQBTGeHowbIGhXbtCWBKYRA%253D)
0. 도입저는 최근에 AWS 공식 인증 시험인 클라우드 실무자 자격증을 취득하여 합격 후기 및 공부 방법을 남겨 다른 분들에게 도움이 되고자 글을 써봅니다.먼저, 인증부터 하겠습니다. 합격컷은 1000점 중 700점이며 저는 약 10일 정도 투자하여 가성비있게 합격했습니다.CLF의 경우 시험이 끝나자마자 합격/불합격 여부를 알 수 있고, 합격하면 약 3시간 뒤 AWS로부터 메일이 옵니다.결과적으로 이제 저는 GPT와 구글링만 있다면 어떻게든 클라우드 배포를 할 수 있는 상태가 되었습니다.위처럼, 점수 보고서, 뱃지 획득, 다음 시험인 SAA 50% 할인권에 대한 안내 메일이 옵니다. 안내 사항에 따라 뱃지를 등록하면 링크드인과 연동하여 뱃지를 등록할 수 있습니다.디지털 뱃지에 대한 자세한 사항은 다음 링..
![[JPA ORM 기본] (2) 프로젝트 생성과 기본 실습](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FcxkuPT%2FbtsLAbPWlxV%2FAAAAAAAAAAAAAAAAAAAAAI5lRXCuTo48k8lFylP-vv5QP0ytxX6F6EfFYC44-I-J%2Fimg.jpg%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DHa6Bvl8RiJlkEFk%252FmSeCb1eyG%252BM%253D)
0. 도입안녕하세요, [JPA ORM 기본]시리즈의 두 번째 글입니다.이번에는 JPA를 위한 기본 설정을 진행한 뒤 엔티티 매니저를 간단히 구현하며 실습해 보겠습니다. 1. 버전 정보Java 21 버전스프링부트 3.3.7Gradle(개발 실습 환경)JPA 표준 설정(Persistence.xml)H2 DatabaseSpring Data JpaLombokPersistence.xml은 순수 Java 환경에서 실습하기 위한 JPA 설정입니다. 2. 프로젝트 생성 및 실행DB 설치하기DB의 경우 MySQL, Oracle 등 다양한 DB가 있지만, 설치가 간편한 H2를 사용하도록 하겠습니다.H2 DB 공식 사이트먼저 위의 사이트에서 H2 DB를 다운받아야 합니다.H2 DB의 경우 In-Memory-Mode와 Im..
![[JPA ORM 기본] (1) JPA란?](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2FlRyEp%2FbtsLAgw3fe3%2FAAAAAAAAAAAAAAAAAAAAAJD_Sm5yXffMbaFvN4v2UcZaqqhFiEqah6RGpLuezLPf%2Fimg.jpg%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DrHU90%252BgiKkyM2lwbbK5Ljll5gvU%253D)
0. 도입이번 포스팅에서는 SQL 중심적인 개발의 문제점을 살펴보고, JPA가 필요한 이유에 대해 정리하겠습니다.이 시리즈를 접하기 전, 알아야 할 선수지식은 다음과 같습니다.객체 지향과 상속DB 테이블의 연관 관계기본키, 외래키에 대한 개념Java와 SpringBoot 대한 기본 개념위의 키워드를 처음 들어봤다면 기본적인 게시판을 만들어 보며 스프링부트를 접하고 와야 합니다.또한 JPA에 대해 다룰 때, 1차 캐시, 쓰기 지연 저장소, 트랜잭션 등 다소 어려운 내용도 소개합니다. 이해하기 쉽게 소개했지만 처음 접하는 분들은 이해가 안될 수 있습니다. 지금 당장은 어렵더라도 뒤에 글들을 이해하고 보면 한번에 이해될 것입니다. 따라서 이해가 안되는 부분들은 일단 읽어보며 넘어가는 것을 추천합니다.그럼 시작..
![[JPA ORM 기본] (0) 시리즈 소개](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdna%2Fc5MV15%2FbtsLz9djIAp%2FAAAAAAAAAAAAAAAAAAAAAGelTZqYgjoSPEj0BzX8yMWhLwBZj6IwNL_XWD7uAp7_%2Fimg.jpg%3Fcredential%3DyqXZFxpELC7KVnFOS48ylbz2pIh7yKj8%26expires%3D1753973999%26allow_ip%3D%26allow_referer%3D%26signature%3DLdoRZ6O81tJHKLTbiqM%252FnkNs%252F1E%253D)
도입[스프링 부트와 AWS로 혼자 구현하는 웹 서비스 후기]최근에 위의 책으로 스프링부트의 전반적인 내용을 공부했습니다. 이 책은 간단한 게시판의 CRUD기능을 설계하고 배포하며 스프링 부트와 서버 설계의 전반적인 내용을 체험해 보기에는 너무 좋은 책입니다.하지만 프로젝트를 시작하며 구체적으로 객체를 설계하려다 이 책에서는 무심코 사용했던 JPA에 대해 동작 원리와 코드의 정당성에 대해 의문이 들었습니다. 결국 간단히 책을 따라 타이핑했던 코드들에 대해 "왜 이렇게 작성했을까?"라는 의문에 꼬리를 물다 보니 다음의 공통 의문에 도달했습니다.실제 서비스의 복잡한 객체들은 어떻게 설계하고 관리할까?이 의문을 해결하려다 보니 객체 설계 원리에 대해 알아야 함을 깨달았고, JPA의 작동 원리를 중심으로 실무에..