반응형

분류 전체보기 210

[백준/Python] 통계학

https://www.acmicpc.net/problem/2108 2108번: 통계학 첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다. www.acmicpc.net import sys from collections import Counter n = int(sys.stdin.readline()) # 수의 개수 nums = [] # 숫자 리스트 # 숫자 입력 받기 for _ in range(n): nums.append(int(sys.stdin.readline())) # 산술 평균 print(round(sum(nums) / n)) # 중앙값 nums.sort() print(nu..

Algorithm/백준 2021.08.30

[SpringBoot] 2주차 스터디 (JPA, domain, repository, DTO, service, controller)

Spring JPA 란? SQL을 쓰지 않고 데이터를 생성, 조회, 수정, 삭제 (CRUD) 할 수 있도록 해주는 번역기 프로젝트 구조는 다음과 같다. 1. Domain, Repository Domain - DB의 테이블 역할을 하는 클래스 Repository - DB의 SQL 역할을 하는 인터페이스 먼저 Course.java 파일을 생성한다. 생성자를 직접 만들지 않고 Lombok을 사용하여 getter가 자동 생성 되도록 하였다. @Getter // Lombok이 getter 자동 생성 @NoArgsConstructor // 기본 생성자를 대신 생성 @Entity // 그냥 클래스 아니고 DB의 테이블 역할을 하는 클래스라는 것을 알려줌 public class Course extends Timesta..

Back-end/Spring 2021.08.28

[백준/Python] 영화감독 숌

https://www.acmicpc.net/problem/1436 1436번: 영화감독 숌 666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타 www.acmicpc.net 처음 생각했던 풀이는 영화제목이 1666, 2666, 3666, ... 으로 증가하니까 그냥 666 앞에 입력받은 숫자만 붙이면 되겠다! 라고 생각해서 코드를 제출했더니 틀렸다고 나왔다. 코드를 짤 때부터 너무 간단하다고 생각하긴 했다...^^ 틀리고 나니 문제를 잘못 이해한 것 같아서 블로그를 찾아봤다. n = int(input()) movie = str(n-1) + '666' print(mo..

Algorithm/백준 2021.08.25

[백준/Python] 체스판 다시 칠하기

https://www.acmicpc.net/problem/1018 1018번: 체스판 다시 칠하기 첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다. www.acmicpc.net 이 문제는 브루트포스 문제로 모든 경우의 수를 탐색해보면 되는 문제였다. 정말 하나씩 다 확인해보는 방법을 선택했다. 시작하는 글자가 'W' 일 때 0번째줄부터 시작한다고 할 때 짝수줄은 'WBWBWB...' 이고, 홀수줄은 'BWBWBW...' 으로 되니까 인덱스로 하나씩 확인해서 제대로 체스판이 칠해져있는지 확인하려고 했다. 행(i)과 열(j) 인덱스를 살펴보면 규칙을 찾을 수 있었다...

Algorithm/백준 2021.08.24

[백준/Python] 덩치

https://www.acmicpc.net/problem/7568 7568번: 덩치 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩 www.acmicpc.net 이 문제는 브루트포스 문제였다. 그래서 그냥 무차별로 대입해서 찾으면 되는 문제였다. n = int(input()) persons = [] # 사람들의 키와 몸무게 정보를 담는 리스트 # 키와 몸무게 입력받기 for _ in range(n): person = list(map(int, input().split())) persons.append(person) # 전체 탐색 수행 for m..

Algorithm/백준 2021.08.24

[SpringBoot] 1주차 스터디 (RestController)

RestController - Rest 는 서버의 응답 형식이 JSON 형식임을 나타낸다. - Controller 는 클라이언트의 요청을 전달받는 코드를 말한다. - 즉, RestController 는 클라이언트의 요청을 받아 JSON 으로 응답 하는 것! 1. 프로젝트 생성하기 [New Project] 를 선택한 후 다음 사진처럼 프로젝트 옵션을 세팅한다. 프로젝트명(Artifact) 와 패키지 이름은 자신이 원하는 대로 바꿔도 괜찮다. 옵션 세팅이 끝나면 [Next] 를 누른다. 프로젝트에 필요한 패키지들을 가져온다. 다음 사진처럼 추가해주면 된다. 추가가 끝나면 [Finish] 를 눌러 프로젝트 생성을 완료한다. 2. 클래스 만들기 JSON 형식으로 응답하기 위한 클래스를 만든다. domain 패키..

Back-end/Spring 2021.08.19

[백준/Python] 하노이 탑 이동 순서

https://www.acmicpc.net/problem/11729 11729번: 하노이 탑 이동 순서 세 개의 장대가 있고 첫 번째 장대에는 반경이 서로 다른 n개의 원판이 쌓여 있다. 각 원판은 반경이 큰 순서대로 쌓여있다. 이제 수도승들이 다음 규칙에 따라 첫 번째 장대에서 세 번째 장대로 www.acmicpc.net # 하노이 탑 알고리즘 1. 1번 기둥의 n-1 개의 원반을 2번 기둥으로 옮긴다. 2. 1번 기둥에 남아 있는 가장 큰 원반을 3번 기둥으로 옮긴다. 3. 2번 기둥의 n-1개의 원반을 3번 기둥으로 옮긴다. num = int(input()) def hanoi(n, p_from, p_to, p_mid): if n == 1: # 원반이 1개이면 무조건 원반을 1번에서 3번으로 옮긴다...

Algorithm/백준 2021.08.14

[백준/Python] 별 찍기 - 10

https://www.acmicpc.net/problem/2447 2447번: 별 찍기 - 10 재귀적인 패턴으로 별을 찍어 보자. N이 3의 거듭제곱(3, 9, 27, ...)이라고 할 때, 크기 N의 패턴은 N×N 정사각형 모양이다. 크기 3의 패턴은 가운데에 공백이 있고, 가운데를 제외한 모든 칸에 별이 www.acmicpc.net 이 문제는 이해하는게 어려웠던 문제였다. 이해하는데 시간이 좀 걸렸다. 이 문제를 푸는데는 여러 가지 방법이 있는데 나는 상중하로 구간을 나눠서 별을 찍는 방식을 선택했다. 구간을 상중하로 나누어 재귀함수를 통해 구해진 별을 붙여 나간다. 코드가 직관적이어서 이해하기 좀 더 쉬웠던 것 같다. print(L) 을 해보면 어떻게 재귀함수가 돌아가는지 이해하는데 도움이 될 것..

Algorithm/백준 2021.08.14

[프로그래머스/Python] 방의 개수 - Level5

https://programmers.co.kr/learn/courses/30/lessons/49190 코딩테스트 연습 - 방의 개수 [6, 6, 6, 4, 4, 4, 2, 2, 2, 0, 0, 0, 1, 6, 5, 5, 3, 6, 0] 3 programmers.co.kr 이 문제는 Level5 답게 굉장히 어려웠다.. 그래서 어떻게 방의 개수를 셀 수 있는지 전혀 생각나지 않았다... 그래서 문제를 풀지는 못하고 다른 사람의 풀이를 보고 정리를 했다. 방의 개수를 어떻게 구할 수 있는지에 대한 것은 이 링크를 참고하면 좋을 것 같다. 굉장히 상세하게 정리해주셔서 도움이 많이 되었다. 결론만 말하자면, 방이 생성되려면 "방문한 노드가 이미 방문한 적 있으며 해당 노드로 들어온 경로는 처음인 경우" 이다. ..

[프로그래머스/Python] 순위 - Level3

https://programmers.co.kr/learn/courses/30/lessons/49191 코딩테스트 연습 - 순위 5 [[4, 3], [4, 2], [3, 2], [1, 2], [2, 5]] 2 programmers.co.kr 이 문제는 처음봤을 때 이기고 지는 관계이므로 선후관계가 있다고 생각해서 위상정렬을 사용해서 풀어야겠다고 생각했었다. 위상정렬로 풀려고보니 위상정렬을 사용하기 위한 조건을 만족하지 못했다. 다른 사람의 풀이를 보고 사용한 알고리즘만 확인했다. 플로이드 워셜 알고리즘을 사용하면 풀 수 있었다. 예전에 공부한 것을 바탕으로 문제를 풀었다. def solution(n, results): answer = 0 graph = [[0] * (n+1) for _ in range(n+..

반응형