목록전체 글 (167)
JiSoo's Devlog
n, m = map(int, input().split()) a = [] def dfs(): if len(a) == m: print(' '.join(map(str, a))) return for i in range(1, n+1): if i not in a: a.append(i) dfs() a.pop() dfs() m개의 수열을 저장하기 위한 리스트 a를 만든다 리스트에 들어간 수열의 개수가 m개가 되면 숫자 출력하고 나오기 리스트 a의 중복 여부를 확인해서 아니면 리스트에 추가
n = input() if "0" not in n: print(-1) else: s = 0 for i in range(len(n)): s += int(n[i]) if s % 3 != 0: print(-1) else: sn = sorted(n, reverse=True) an = "".join(sn) print(an) 30의 배수는 3의 배수이면서 10의 배수이기도 하다 10의 배수가 되려면 마지막 일의 자리가 반드시 0으로 끝나야 한다 3의 배수가 되려면 각 자릿수의 합이 3의 배수이면 된다 0이 들어가지 않는다면 -1 출력 30의 배수가 되는 가장 큰 값을 출력해야 하기 때문에 내림차순으로 정렬만 해주면 된다
n = int(input()) ro = [] v = [] for i in range(n): ro.append(int(input())) ro.sort(reverse=True) for j in range(n): v.append(ro[j]*(j+1)) print(max(v)) 예를 들어 10과 15의 무게를 가진 두 로프라고 했을 때 두 로프가 최대로 버틸 수 있는 무게는 10 그렇기 때문에 10*2 = 20이 된다 입력받은 로프의 무게를 리스트에 넣어주고 내림차순으로 정렬 [15, 10] 이렇게 되는데 여기서 두 번째 값인 10을 버틸 수 있게 되기 때문 결론적으로 n번째로 큰 수를 n번 곱해주면 된다는 규칙이 나오게 된다 ro[n] * n번째 자리
n = int(input()) a = [] for i in range(n): a.append(int(input())) d = [0] * (n) if len(a)
class에서 property를 선언할 때는 타입을 사용해 정의한다 function 내에서 변수 사용 시 var 사용하면 된다 class 내부에는 타입 반드시 선언 class Player { String name = 'jisoo'; int xp = 1500; } void main(){ var player = Player(); // Player 인스턴스 생성 print(player.name); player.name = 'lala'; print(player.name); } Player 인스턴스 생성 후 property의 값을 바꿀 수도 있고 원하는 값을 가져올 수도 있다 만약 name을 바꾸지 못하게 하고 싶다면 final 추가 class Player { final String name = 'jisoo'; ..
n, m = map(int, input().split()) dic_n = {} dic_s = {} for i in range(n): v = input().strip() dic_n[str(i+1)] = v dic_s[v] = i+1 for i in range(m): q = input().strip() if q.isdigit(): print(dic_n[q]) if q.isalpha(): print(dic_s[q]) 딕셔너리 2개를 사용해야 한다 {숫자:이름} : 숫자로 문자 출력 {이름:숫자} : 문자로 숫자 출력 input().strip()을 사용한 건 \n 마지막 공백 문자를 제거해 주기 위해서 isdigit()로 숫자인지 판별 isalpha()로 영문이나 한글인지 확인
n = int(input()) al = list(map(int, input().split())) bl = list(map(int, input().split())) c = 0 for i in range(n): c += min(al) * max(bl) al.pop(al.index(min(al))) bl.pop(bl.index(max(bl))) print(c) 배열 A와 B의 원소를 각각 곱한 값의 합의 최솟값을 구해야 된다 B는 재배열 X A배열에서 제일 작은 수와 B배열에서 제일 큰 수를 곱하고 이런 식으로 계속 반복해 더하기 두 배열에서 해당 값을 각각 곱해주고 pop으로 빼주고를 반복 n = int(input()) al = list(map(int, input().split())) bl = list(ma..
import sys input = sys.stdin.readline n, m = map(int, input().split()) no = [list(map(int, input().split())) for _ in range(m)] am = [[] for _ in range(n+1)] for u, v in no: am[u].append(v) am[v].append(u) c = 0 vi = [0] * (n+1) def dfs(v): vi[v] = 1 for i in am[v]: if not vi[i]: dfs(i) for i in range(1, n+1): if not vi[i]: dfs(i) c += 1 print(c) 연결 요소의 개수가 그래프의 개수를 의미 no[u]에 v 저장하고 no[v]에 u 저장 ..
m = int(input()) a = [0] * 101 a[1] = 1 a[2] = 1 a[3] = 1 for i in range(4, 101): a[i] = a[i-2] + a[i-3] for i in range(m): n = int(input()) print(a[n]) 점화식은 P(n) = P(n-2) + P(n-3)
String sayHello(String name){ return "Hello $name nice to meet you!"; } void main(){ print(sayHello('jisoo')); } fat arrow syntax ↓ String sayHello(String name) => "Hello $name nice to meet you!"; num plus(num a, num b) => a + b; fat arrow syntax는 곧바로 return하는 거랑 같은 의미 Dart의 function은 named parameter을 지원한다 name parameters는 명시적으로 required로 표시되지 않는 한 선택 사항이다 기본값을 제공하지 않거나 named parameters를 필수로 표시하..