목록전체 글 (134)
Code&Data Insights
2022.01.25 # Stage 8 - [2839] [ 2839 ] - 설탕 배달 [ my code - 1st attempt ] [ my code - 2nd attempt ] ---> 예제는 다 옳게 출력되는데 틀려서 나름 경우의 수를 더 추가해서 했는데 또 틀림.. =====> 일단 if-else 문으로 푸는건 너무 막연하고 내가 입력한 케이스는 너무 적었다. 거의 한시간~2시간 동안 붙잡고 있다가 다른 분들 어떻게 풀었는 지 쭉 봤는데 거의 함수나 whilte문 이용해서 풀어서 나도 그쪽 으로 생각해 보기로 했다. 너무 안풀리면, 앞으로 수학적으로 먼저 알고리즘 정리한 후에 다른 방법을 생각해 보는게 좋을 것 같다. [ 풀이 ] 여기서 3키로와 5키로의 설탕 주머니를 배달할 때, 5나 3으로 딱 떨..
2022.01.22 # 1. Stage 10 - [ 10872 ] [JAVA] import java.util.Scanner; public class Main { public static int Factorial(int a){ if (a == 1) { return 1; }else if(a==0) { return 1; }else { return a *Factorial(a-1); } } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); System.out.println(Factorial(n)); } } ----..
2022.01.22 Java에서 loop statement인 for/while문은 반복함수를 작성할때 주로 쓰인다. 재귀함수는 자신의 함수 내부에서 자시 자신을 다시 호출하여 문제를 해결한다 => 재귀함수는 문제를 해결해 나가기 위해 원래 범위에서 더 작은 범위의 하위 문제를 먼저 해결함으로써 문제를 해결한다. 더 수학적인 사고방식 * 재귀함수는 더 간결하고 직관적인 풀이 방식이지만, 때로는 심각하게 비효율적이기때문에 알고리즘을 짤때 유의해야한다. * 반복함수를 썼을때보다 훨씬 복잡해서, 더 많은 시간이 걸릴수도 있음 -> 동적 프로그래밍으로 해결 가능
** Big O notation => O(1) : constant time / O(n) : linear time [ Interface vs Data Structure ] Interface : - specification - what data can store - what operations are supported what they mean - problem Data structure: - representation - how to store data - algorithms to support operations - solution 2 main interfaces : set / sequence 2 main Data Structure approaches : arrays / pointer-based * St..
Problem ) Verify that the relation, two ordered pairs(a,b) and (c,d) are equivalent if ad= bc, is an equivalence relation on the set S of all ordered pairs (a, b) of integers with b̸=0. --> (1) reflexive : For all (a, b) ∈ X, ab = ba. This is clearly true. Hence R is reflexive. (2) symmetric : For all (a,b),(c,d) ∈ X, suppose (a,b)R(c,d). Then ad = bc if and only if cb = ..
2022.01.21 # Stage 8 - [ 1712] [1712] - 손익분기점 [first code] a,b,c = map(int, input().split()) n = 0 while True: if a + (b*n) == (c*n): print(n+1) break elif b > c: print(-1) break n += 1 ---> 이렇게 하니까 예제 1,2번은 통과인데 마지막 숫자 큰 예제는 아웃풋 안나오고, 백준에서 시간초과가 떴다. [new code] a,b,c = map(int, input().split()) b_e_point = 0 if (b >= c): print(-1) else: b_e_point = (a // (c-b)) + 1 print(b_e_point) ---> 처음에 if(b..
2022.01.20 지금까지 어려웠던 & 틀렸던 문제 다시 풀어보기 [10871] [my code] n,x = map(int, input().split()) arr = [] for i in range(n): i = int(input()) if i 출력은 제대로 됐지만 런타임에러가 났다. [new code] n,x = map(int, input().split()) arr = list(map(int,input().split())) for i in range(n): if arr[i] 시간초과가 떴다. [new code] n = int(input()) num = n cnt = 0 while True: a = num // 10 b = num % 10 c = (a+b)%10 num = (b*10) + c cnt +..
2022.01.17 # 문자열 - stage 7 [2908] [my code] a,b = map(str,input().split()) a_new = int(a[2]+a[1]+a[0]) b_new = int(b[2]+b[1]+b[0]) if a_new > b_new: print(a_new) else: print(b_new) --> if else 대신 list/ join/ reversed 를 써서 max 함수로 풀수있음 ** [::-1] 를 쓰면 문자열을 reverse 시킬 수 있음! [new code] a,b = input().split() a = a[::-1] b = b[::-1] if a > b: print(a) else: print(b) ---------------------------- [5622]..