온코더 레벨 15 원형 배치
·
코테 문제 풀이/온코더 oncoder
class Solution: def solution(self, n1, n2, K): self.n1 = n1 self.n2 = n2 self.K = K self.t=[] if self.n2>=1 and self.n1>=1: for i in range(self.n1+self.n2): self.t.append('M') d=self.K i=0 r=[] while True: if d>len(self.t): while True: d = d-len(self.t) if d
온코더 레벨 14 레이저 발사
·
코테 문제 풀이/온코더 oncoder
from math import * class Solution: def solution(self, x, y1, y2): self.a = x self.b = y1 self.c = y2 sum=0 for i in range(len(self.a)): if(self.b[i]>self.c[i]): arg1 = self.b[i] arg2 = self.c[i] else : arg1 = self.c[i] arg2 = self.b[i] res = atan2(arg1,self.a[i])/pi res -= atan2(arg2,self.a[i])/pi sum += res return sum cs 이 문제를 풀기 위해서는 atan2 함수와 라디안(호도법) 단위를 알아야 한다. 라디안 범위는 원에 반지름에 대한 호의 길이의 비이다..
온코더 레벨 13 수열 중복 제거
·
코테 문제 풀이/온코더 oncoder
class Solution: def solution(self, sequence): self.s = sequence self.t = list(set(self.s)) for i in self.t: k = self.s.count(i) for j in range(k-1): self.s.remove(i) return self.s cs set()으로 중복되는 숫자를 제거해 어떤 숫자들이 있는지를 먼저 파악 후, k에 몇 번 중복되는지 갯수를 담는다. remove()는 처음 나오는 자료부터 지우기 때문에 k-1 만큼 중복된 숫자를 지워주면 된다. 출처 : www.oncoder.com/
온코더 레벨 11 잔액 계산
·
코테 문제 풀이/온코더 oncoder
class Solution: def solution(self, balance, transactions): self.b = balance self.t = transactions for i in self.t: if "C" in i : a=i[2:] self.b += int(a) if "D" in i: a=i[2:] self.b -= int(a) return self.b cs "C 거래금액" "D 거래금액" 이므로 C 또는 D가 들어있는지 먼저 판단 후, i[2:]로 거래금액을 a에 저장한다. 출처 : www.oncoder.com/
온코더 레벨 10 평형점 구하기
·
코테 문제 풀이/온코더 oncoder
from math import * class Solution: def solution(self, x1, m1, x2, m2): self.x1 =x1 self.m1=m1 self.x2=x2 self.m2=m2 res = ((sqrt(self.m1)*self.x2)+(sqrt(self.m2)*self.x1)) / (sqrt(self.m2)+sqrt(self.m1)) return res Colored by Color Scripter cs res는 두 물체 사이에 놓일 새로운 물체의 위치이다. 만유인력 공식인 질량1*질량2 / 거리^2 를 이용해서(중력 상수 G는 무시) x1와 res사이의 힘과 x2와 res 사이의 힘이 같다고 두면 res를 구할 수 있다. 출처 : www.oncoder.com/
온코더 레벨 9 스택 만들기
·
코테 문제 풀이/온코더 oncoder
class Solution: def solution(self, cmds): self.c = cmds self.s = [] for i in self.c: if "PUSH" in i: d=i[5:] self.s.append(int(d)) if "POP" in i and self.s !=[]: self.s.pop() return self.s cs 파이썬 알고리즘 강의를 듣지 않아서 큐와 스택을 모르고 문제를 시작했지만 의외로 간단한거였다 ! 스택은 항아리에 음식을 하나하나 담듯이 가장 먼저 넣은 것이 나중에 나오고, 가장 나중에 넣은 것이 뺄 때는 먼저 나오는 것이다. 파이썬의 리스트와 함수를 사용하면 list.append() list.pop() 을 사용할 수 있는데 이 때 pop() 은 빈칸이어야 한다. 그..