본문 바로가기

전체 글299

[코딩 테스트] 3진법 뒤집기 문제 설명 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. 제한사항 n은 1 이상 100,000,000 이하인 자연수입니다. def solution(n): answer = '' while n > 0: n, re = divmod(n,3) answer += str(re) return int(answer, 3) 3진법 문제는 자주 나오는 유형이니 알아두는것이 좋다 진법 문제는 메커니즘을 정확히 알아야한다 45라는 값이 들어오면 3진법으로 1200으로 간단하게 45를 3으로 나누어서 나머지를 반대로 해주면 값이된다 즉 while 문을 돌려서 n이 0보다 작아 질 때까지 돌린다 div함수를 이용.. 2022. 2. 10.
[코딩 테스트] 직사각형 별찍기 직사각형 별찍기 문제 설명 이 문제에는 표준 입력으로 두 개의 정수 n과 m이 주어집니다.별(*) 문자를 이용해 가로의 길이가 n, 세로의 길이가 m인 직사각형 형태를 출력해보세요. 제한 조건 n과 m은 각각 1000 이하인 자연수입니다. a, b = map(int, input().split(' ')) for i in range(b) : for j in range(a) : print('*', end ='') print() 직사각형으로 별을 찍으면 완성되는 간단한 문제 먼저 값을 받는 변수를 설정한다 만약 값이 5 3 이렇게 들어온다면 0 - 0,1,2,3,4 / 1 - 0,1,2,3,4 / 2 - 0,1,2,3,4 이런 형식으로 진행될 것이다 2022. 2. 10.
[Spring Boot] Enum을 사용한 타임리프 체크박스 타임리프 체크박스 enum을 사용해서 상품 종류를 선택하는 간단한 로직을 짜 볼 것이다 첫 번째로 상품 종류를 담고 있는 enum이 필요하다 public enum ItemType{ BOOK("도서"), FOOD("음식"), ETC("기타"); private final String description; ItemType(String descrption) { this.description = description; } } 두 번째로 상품에 대한 정보에 대한 프로퍼티가 필요하다 @Data public class Item { private Long id; private String itemName; private Integer price; private Integer quantity; private ItemTy.. 2022. 2. 10.
[Spring boot] 타임리프 입력 폼 처리 값을 컨트롤 단으로 넘길때 기존 html에서는 name, id, value를 입력해야만 값이 들어간다 타임리프에서는 form 태그에 th:object=”${}” 를 추가해주고 그 뒤에 입력 받을 input 태그에 **th:field=”*{}”**를 입력해주면 위에 내용을 자동으로 생성해준다 먼저 Controller 단에서 model값을 view에 넘겨준다 @GetMapping("/add") public String addForm(Model model) { model.addAttribute("item", new Item()); return "form/addForm"; } 뷰에서는 th:object 와 th:field로 값을 받아올수있다 상품 ID 상품명 가격 수량 ​ 2022. 2. 10.
[T.I.L]DAY30 ------------------------------------------------------------ [T.I.L] ------------------------------------------------------------ - TODO LIST 파이썬 알고리즘 2문제 스프링 부트 섹션 2 끝내기 쿠버네티스 강의 2022.02.10 - [코딩테스트/풀이] - [코딩 테스트] 3진법 뒤집기 2022.02.10 - [코딩테스트/풀이] - [코딩 테스트] 직사각형 별찍기 2022.02.10 - [프로그래밍언어/JAVA] - [Spring Boot] Enum을 사용한 타임리프 체크박스 2022.02.10 - [프로그래밍언어/JAVA] - [Spring boot] 타임리프 입력 폼 처리 [Spring bo.. 2022. 2. 10.
[개발 개념]쿠버네티스 다운로드 Play with kubernetes https://labs.play-with-k8s.com/ 에 들어가준다 로그인을 해준 뒤 start한다 시작하면 다음과 같이 사용할 수 있는 시간이 나온다 그 밑에 인스턴스 ADD NEW INSTANCE를 클릭해서 인스턴스를 생성할 수 있다 위에 상태 메시지를 보면 클러스터 마스터 노드를 초기화 하려면 다음과 같은 명령어를 입력해 주어야한다 kubeadm init --apiserver-advertise-address $(hostname -i) --pod-network-cidr 10.5.0.0/16 참고로 CTRL + INSERT하여 메모장에 복사하고 CTRL + SHIFT를 사용하여 붙여넣기 할 수있다 이때 구성되는 컴포넌트들은 시스템 워크노트, DOCKER API, CONTROLLER, SCHEDULE.. 2022. 2. 9.
[개발 개념]쿠버네티스 쿠버네티스 컨테이너 NODE 환경에서 내가 만든 APP.JS에 요청이 들어오면 컨테이너 호스트 이름과 OS 호스트 이름등 추가 정보를 가지고 LISTEN(포트번호)에 전달하여 실행 컨테이너 실행 WEB SEVER 컨테이너 생성 LINUX 운영체제 안에 DOCKER를 설치해주고 데몬을 실행 시켜주면 컨테이너 빌드와 실행이 가능하다 도커 컨테이너를 모아놓은 허브에 빌드와 푸쉬해준다 docker biuld -t smlinux/nodeinfo:v1 / docker images → 도커 빌드 docker push smlinux/nodinfo:v1 → 도커 푸쉬 도커 허브와 연결 리눅스 운영체제에 도커를 설치 허브와 리눅스 연결 docker pull / docker create / docker start app 컨.. 2022. 2. 9.
[Spring] 타임리프 기본기능 정리 타임리프 기본기능 정리 간단한 표현: ◦ 변수 표현식: ${...} ◦ 선택 변수 표현식: *{...} ◦ 메시지 표현식: #{...} ◦ 링크 URL 표현식: @{...} ◦ 조각 표현식: ~{...} • 리터럴 ◦ 텍스트: 'one text', 'Another one!',… ◦ 숫자: 0, 34, 3.0, 12.3,… ◦ 불린: true, false ◦ 널: null ◦ 리터럴 토큰: one, sometext, main,… • 문자 연산: ◦ 문자 합치기: + ◦ 리터럴 대체: |The name is ${name}| • 산술 연산: ◦ Binary operators: +, -, *, /, % ◦ Minus sign (unary operator): - • 불린 연산: ◦ Binary operators:.. 2022. 2. 9.
[개발 개념] 마이크로서비스 아키텍처 vs 모노리틱 아키텍처 모노리틱 아키텍처 모노리틱 아키텍처는 가장 기본적으로 사용되는 웹 개발 시스템 기법 하나의 어플리케이션 내에 모든 로직들이 작성되어 있는 올인원 방식의 통짜 구조 데이터베이스에 전체 어플리케이션을 하나로 처리하기 때문에 하나의 어플리케이션만 개발하면 되고 배포가 간편 테스트를 실행할 때에도 하나의 어플리케이션만 수행하면 되기 때문에 편리 all-by-reference call에 의해서 컴포넌트 간 호출 시 성능에 제약이 덜하며, 운영 관리가 용이 하나의 구조로 되어 있기 때문에, 트렌젝션 관리가 용이 모노리틱 아키텍처 단점 프로젝트 규모가 커지면 빌드 및 배포 시간이 오래 걸림 한 두 사람의 실수가 전체 시스템의 빌드 실패를 유발하기 때문에 큰 프로젝트일수록 불리하고 협업 개발이 어려움 시스템 컴포넌트들.. 2022. 2. 9.
[T.I.L]DAY29 ------------------------------------------------------------ [T.I.L] ------------------------------------------------------------ 2022.02.09 - [개발 개념/이론] - [개발 개념]쿠버네티스 다운로드 Play with kubernetes 2022.02.09 - [개발 개념/이론] - [개발 개념]쿠버네티스 2022.02.09 - [프로그래밍언어/JAVA] - [Spring] 타임리프 기본기능 정리 2022.02.09 - [개발 개념/이론] - [개발 개념] 마이크로서비스 아키텍처 vs 모노리틱 아키텍처 [개발 개념] 마이크로서비스 아키텍처 vs 모노리틱 아키텍처 모노리틱 아키텍처 모노리틱 아키텍.. 2022. 2. 9.
[T.I.L]DAY28 ------------------------------------------------------------ [T.I.L] ------------------------------------------------------------ 2022.02.08 - [프로그래밍언어/JAVA] - [스프링] 스프링 EL 2022.02.08 - [개발 개념/이론] - [개발 개념] 컨테이너 vs 가상머신 쿠버네티스 2022.02.08 - [코딩테스트/풀이] - [코딩 테스트] 격자판 회문수 [코딩 테스트] 격자판 회문수 격자판 회문수 1부터 9까지의 자연수로 채워진 7x7 격자판이 주어지면 격자판 위에서 가로 방향으로 또는 세로방향으로 길이 5자리 회문수가 몇 개 있는지 구하는 프로그램 board=[list(map(i.. 2022. 2. 8.
[스프링] 스프링 EL 스프링 EL 스프링 EL 타임리프에서 변수를 사용할 때는 변수 표현식을 사용한다 변수 표현식에는 스프링 EL이라는 스프링이 제공하는 표현식을 사용할 수 있다 @GetMapping("/variable") public String variable(Model model) { User userA = new User("userA", 10); User userB = new User("userB", 20); List list = new ArrayList(); list.add(userA); list.add(userB); Map map = new HashMap(); map.put("userA", userA); map.put("userB", userB); model.addAttribute("user", userA); mo.. 2022. 2. 8.
[개발 개념] 컨테이너 vs 가상머신 쿠버네티스 쿠버네티스 컨테이너 NODE 환경에서 내가 만든 APP.JS에 요청이 들어오면 컨테이너 호스트 이름과 OS 호스트 이름 등 추가 정보를 가지고 LISTEN(포트번호)에 전달하여 실행 컨테이너 실행 WEBSEVER 컨테이너 생성 LINUX 운영체제 안에 DOCKER를 설치해주고 데몬을 실행시켜주면 컨테이너 빌드와 실행이 가능하다 도커 컨테이너를 모아놓은 허브에 빌드와 푸시해준다 docker biuld -t smlinux/nodeinfo:v1 / docker images → 도커 빌드 docker push smlinux/nodinfo:v1 → 도커 푸시 도커 허브와 연결 리눅스 운영체제에 도커를 설치 허브와 리눅스 연결 docker pull / docker create / docker start app 컨테.. 2022. 2. 8.
[코딩 테스트] 격자판 회문수 격자판 회문수 1부터 9까지의 자연수로 채워진 7x7 격자판이 주어지면 격자판 위에서 가로 방향으로 또는 세로방향으로 길이 5자리 회문수가 몇 개 있는지 구하는 프로그램 board=[list(map(int, input().split())) for _ in range(7)] cnt = 0 for i in range(3): for j in range(7): tmp = board[j][i:i+5] if tmp ==tmp[::-1]: cnt += 1 for k in range(2): if board[i+k][j] != board[i+5-k-1][j]: break else : cnt += 1 첫 번째로 배열을 받을 수 있는 2중 배열을 만든다 일단 가로로 회문하는 수가 있는지 확인해야한다 j는 행 i는 열을 슬라.. 2022. 2. 8.
[T.I.L]DAY27 ------------------------------------------------------------ [T.I.L] ------------------------------------------------------------ 2022.02.07 - [개발 개념] - [개발 개념] PRG Post/Redirect/Get 2022.02.07 - [프로그래밍언어/JAVA] - [Java] Thymeleaf 타임리프 2022.02.07 - [코딩테스트/풀이] - [코딩 테스트] 스도쿠 파이썬 [코딩 테스트] 스도쿠 파이썬 스도쿠 매우 간단한 숫자 퍼즐 스도쿠를 구현하는 문제 9 X 9 크기의 보드가 있을 때, 각 행과 각 열, 그리고 9개의 3 X 3 크기의 보드에 1부터 9까지의 숫자가 중복 없이 나타.. 2022. 2. 7.
[코딩 테스트] 스도쿠 파이썬 스도쿠 매우 간단한 숫자 퍼즐 스도쿠를 구현하는 문제 9 X 9 크기의 보드가 있을 때, 각 행과 각 열, 그리고 9개의 3 X 3 크기의 보드에 1부터 9까지의 숫자가 중복 없이 나타나도록 보드를 채우면 된다 def check(a): for i in range(9): ch1=[0]*10 ch2=[0]*10 for j in range(9): ch1[a[i][j]]=1 [ ch2[a[j][i]]=1 if sum(ch1)!= 9 or sum(ch2) != 9: return False for i in range(3): for j in range(3): ch3=[0]*10 for k in range(3): for s in range(3): ch3[a[i*3+k][j*3+s]]=1 if sum(ch3) != 9:.. 2022. 2. 7.
[개발 개념] PRG Post/Redirect/Get PRG Post/Redirect/Get PRG 사용 이유 웹 브라우저의 새로 고침은 마지막에 서버에 전송한 데이터를 다시 전송한다 그로인해서 데이터를 INSERT 할때 여러번 INSERT 되는 현상이 생긴다 해결 방법 insert할때 URL 정보에 파라미터 값을 넣어주면 해결이 가능하다 이때 pathVariable를 사용하여 URL에 값을 넣어주면 된다 두번째 방법이 있는데 RedirectAttributes를 사용하면 된다 RedirectAttributes pathVariable를 지원하고 쿼리 파라미터까지 처리 해준다 또한 메시지도 추가해서 URL에 보내줄 수 있다 @PostMapping("/add") public String addItemV6(Item item, RedirectAttributes re.. 2022. 2. 7.
[Java] Thymeleaf 타임리프 타임리프 장점 타임리프는 순수 HTML을 파일을 웹 브라우저에서 열어도 내용을 확인할 수 있다 서버를 통해 뷰 템플릿을 거치면 동적으로변경된 결과를 확인할 수 있다 순수 HTML을 그대로 유지하면서 뷰 템플릿도 사용할 수 있다 타임리프 사용 선언 선언 해주면 thymeleaf 기본 패스를 읽어 실행할 수 있다 속성 변경 원래 html에서 사용하는 css/bootstrap.min.css 에 추가해준다 th:href="@{/css/bootstrap.min.css}” 를 추가해주면 대체되면서 동적으로 변경 가능 URL 링크 표현식 @{...} 를 사용하며, 이것을 URL 링크 표현식이라고 한다 URL 링크 표현식을 사용하면 서블릿 컨텍스트를 자동으로 포함한다 폼 이동 (th:onclick) 원래 있던 oncl.. 2022. 2. 7.
[T.I.L]DAY26 ------------------------------------------------------------ [T.I.L] ------------------------------------------------------------ 오늘은 삘 받아서 알고리즘 공부를 했다 원래는 무서워서 피했는데 오늘부터 머리 부팅하는 용도로 2,3 문제는 풀어야겠다 2022.02.04 - [코딩테스트/풀이] - [코딩 테스트]곳감 (모래시계) 파이썬 2022.02.04 - [코딩테스트/풀이] - [코딩 테스트] 다이아몬드 합 구하기 2022.02.04 - [코딩테스트/풀이] - [코딩 테스트] 격자판 최대합 파이썬 2022.02.04 - [코딩테스트/풀이] - [코딩 테스트] 수의 합 구하기 파이썬 2022.02.04 .. 2022. 2. 4.
[코딩 테스트]곳감 (모래시계) 파이썬 N*N 격자판으로 이루어져 있는 마당이 있다 해의 위치에 따라 특정위치의 감은 잘 마르지 않습니다. 그래서 회전시켜 위치를 변경해서 모든 감이 잘 마르게 해야함 만약 회전명령 정보가 2 0 3이면 2번째 행을 왼쪽으로 3만큼 회전시키는 명령 첫번째 수는 행 번호, 두 번째 수는 방향 0이면 왼쪽, 1이면 오른쪽, 세 번째 수는 회전하는 격자의 수 n = int(input()) a = [list(map(int, input().split())) for _ in range(n)] m = int(input()) for i in range(m) : h , t , k = map(int, input().split()) if t == 0: for _ in range(k): a[h-1].append(a[h-1].pop(.. 2022. 2. 4.
[코딩 테스트] 다이아몬드 합 구하기 N*N 으로 이루어져있는 격자판이 있다 N의 크기는 항상 홀수이다 다이아몬드 모양으로 합을 구할 예정 n = int(input()) a = [list(map(int, input().split())) for _ in range(n)] res = 0 s=e=n//2 for i in range(n): for j in range(s, e+1): res+=a[i][j] if i 2022. 2. 4.