분류 전체보기 645

[파이썬, Java] 10974. 모든 순열

문제 N이 주어졌을 때, 1부터 N까지의 수로 이루어진 순열을 사전순으로 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 N(1 ≤ N ≤ 8)이 주어진다. 출력 첫째 줄부터 N!개의 줄에 걸쳐서 모든 순열을 사전순으로 출력한다. 예제 입력 1 3 예제 출력 1 1 2 3 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1 🐊 나의 풀이 import sys input=sys.stdin.readline N=int(input()) visited=[0]*(N+1) def dfs() : if len(num) == N : print(num) for i in range(1, N+1) : if not visited[i] : visited[i]=1 num.append(i) dfs() visited[i]=0 num.p..

coding test 2021.09.26

비트마스크

비트의 위치가 1이면 켜져 있는 것, 0이면 꺼져 있는 것 🍟 비트마스크를 사용하면 얻는 장점 더 빠른 수행 시간 : O(1) 더 간결한 코드 더 작은 메모리 사용량 연관 배열을 배열로 대체 : map를 int[]로 대체 🦘 비트마스크를 이용한 집합의 구현 N비트 정수 변수는 0부터 N-1까지의 정수 원소를 가질 수 있는 집합이 된다. 원소 i가 집합에 속해 있다면 2^i 비트가 1이다. 상수 0은 공집합 int num=(1

[파이썬] 1182. 부분수열의 합

문제 N개의 정수로 이루어진 수열이 있을 때, 크기가 양수인 부분수열 중에서 그 수열의 원소를 다 더한 값이 S가 되는 경우의 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 정수의 개수를 나타내는 N과 정수 S가 주어진다. (1 ≤ N ≤ 20, |S| ≤ 1,000,000) 둘째 줄에 N개의 정수가 빈 칸을 사이에 두고 주어진다. 주어지는 정수의 절댓값은 100,000을 넘지 않는다. 출력 첫째 줄에 합이 S가 되는 부분수열의 개수를 출력한다. 예제 입력 1 5 0 -7 -3 -2 5 8 예제 출력 1 1 🐝 나의 풀이 N, S=map(int, (input().split())) # 정수의 개수, 정수 lst=list(map(int, input().split())) # N개의 정수 answer=0 ..

coding test 2021.09.25

[Java] 1535. 안녕

문제 세준이는 성형수술을 한 후에 병원에 너무 오래 입원해 있었다. 이제 세준이가 병원에 입원한 동안 자기를 생각해준 사람들에게 감사하다고 말할 차례이다. 세준이를 생각해준 사람은 총 N명이 있다. 사람의 번호는 1번부터 N번까지 있다. 세준이가 i번 사람에게 인사를 하면 L[i]만큼의 체력을 잃고, J[i]만큼의 기쁨을 얻는다. 세준이는 각각의 사람에게 최대 1번만 말할 수 있다. 세준이의 목표는 주어진 체력내에서 최대한의 기쁨을 느끼는 것이다. 세준이의 체력은 100이고, 기쁨은 0이다. 만약 세준이의 체력이 0이나 음수가 되면, 죽어서 아무런 기쁨을 못 느낀 것이 된다. 세준이가 얻을 수 있는 최대 기쁨을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 사람의 수 N(

coding test 2021.09.22

[파이썬, Java] 1526. 가장 큰 금민수

문제 은민이는 4와 7을 좋아하고, 나머지 숫자는 싫어한다. 금민수는 어떤 수가 4와 7로만 이루어진 수를 말한다. N이 주어졌을 때, N보다 작거나 같은 금민수 중 가장 큰 것을 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 N이 주어진다. N은 4보다 크거나 같고 1,000,000보다 작거나 같은 자연수이다. 출력 첫째 줄에 N보다 작거나 같은 금민수 중 가장 큰 것을 출력한다. 예제 입력 1 100 예제 출력 1 77 🍟 나의 풀이 N=int(input()) ans=0 def dfs(num) : global ans if int(num) > N : return elif ans < int(num) : ans=int(num) for i in ['4', '7'] : num+=i dfs(num) num=n..

coding test 2021.09.22

[파이썬, Java] 10870. 피보나치 수 5

문제 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다. n=17일때 까지 피보나치 수를 써보면 다음과 같다. 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597 n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n이 주어진다. n은 20보다 작거나 같은 자연수 또는 0이다. 출력 첫째 줄에 n번째 피보나치 수를 출력한다. 예제 입력 1 10 예제 출력 1 55 🍟 나의 풀이 n=int(input()) if n < ..

coding test 2021.09.22

Repository와 Service의 차이

왜 두 개를 구분 짓는지 이유를 알고 싶었다. Repository는 DB에 접근하는 코드를 모아두었다. Service는 DB에 직접적으로 접근하는 것은 Repository에 맡겨서 비즈니스 로직에 집중할 수 있다. 비즈니스 로직은 데이터베이스와 유저 인터페이스간의 정보 교환을 다루는 알고리즘 나는 서비스가 리포지토리를 이용해서 어떤 기능(비즈니스 로직)을 만드는 것이라고 이해했다. 참고 👇 https://www.inflearn.com/questions/77417 Repository vs Service 의 역할의 차이점 - 인프런 | 질문 & 답변 안녕하세요. 선생님 강의 정말 잘 보고있습니다. 궁금한점이 있어서요 Repository 패키지와 Service 패키지가 보통 구분되어있는데 정확하게 쓰임새의 차..

*(packing / unpacking)

1. packing은 *매개변수 matrix=[[*map(int, input().split())] for _ in range(N)] 위치인자를 여러 개 받을 수 있다. ❗아래와 같이 list()에 packing을 넣으면 에러 뜬다. matrix=[list(*map(int, input().split())) for _ in range(N)] 2. 위치인자를 unpacking할 때 *인자 사용 lst=[1, 2, 3] print(*lst) # 1 2 3 print(lst)일 경우 [1, 2, 3]이다. 참고 👇 https://wikidocs.net/22801 3) packing, unpacking `print`함수는 출력하고자하는 객체가 몇개던지, 즉 몇개의 인자를 받던지 상관하지 않고 출력해줍니다. ``` ..

Languages/Python 2021.09.16

[Java] 3055. 탈출

문제 사악한 암흑의 군주 이민혁은 드디어 마법 구슬을 손에 넣었고, 그 능력을 실험해보기 위해 근처의 티떱숲에 홍수를 일으키려고 한다. 이 숲에는 고슴도치가 한 마리 살고 있다. 고슴도치는 제일 친한 친구인 비버의 굴로 가능한 빨리 도망가 홍수를 피하려고 한다. 티떱숲의 지도는 R행 C열로 이루어져 있다. 비어있는 곳은 '.'로 표시되어 있고, 물이 차있는 지역은 '*', 돌은 'X'로 표시되어 있다. 비버의 굴은 'D'로, 고슴도치의 위치는 'S'로 나타내어져 있다. 매 분마다 고슴도치는 현재 있는 칸과 인접한 네 칸 중 하나로 이동할 수 있다. (위, 아래, 오른쪽, 왼쪽) 물도 매 분마다 비어있는 칸으로 확장한다. 물이 있는 칸과 인접해있는 비어있는 칸(적어도 한 변을 공유)은 물이 차게 된다. 물..

coding test 2021.09.15

[파이썬] 1021. 회전하는 큐

문제 지민이는 N개의 원소를 포함하고 있는 양방향 순환 큐를 가지고 있다. 지민이는 이 큐에서 몇 개의 원소를 뽑아내려고 한다. 지민이는 이 큐에서 다음과 같은 3가지 연산을 수행할 수 있다. 첫 번째 원소를 뽑아낸다. 이 연산을 수행하면, 원래 큐의 원소가 a1, ..., ak이었던 것이 a2, ..., ak와 같이 된다. 왼쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, ..., ak가 a2, ..., ak, a1이 된다. 오른쪽으로 한 칸 이동시킨다. 이 연산을 수행하면, a1, ..., ak가 ak, a1, ..., ak-1이 된다. 큐에 처음에 포함되어 있던 수 N이 주어진다. 그리고 지민이가 뽑아내려고 하는 원소의 위치가 주어진다. (이 위치는 가장 처음 큐에서의 위치이다.) 이때, 그..

coding test 2021.09.14