문제 원본

https://www.hackerrank.com/contests/projecteuler/challenges/euler002


문제 요약

N 미만의 피보나치 수열 중 2의 배수를 모두 합한 값. (단, 최초 2개의 숫자는 1, 2로 시작함)



-Solution.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
 
public class Solution {
 
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int t = in.nextInt();
        for(int a0 = 0; a0 < t; a0++){
            long n = in.nextLong();
            
            long sum = 0;
            long prev = 1, fibo = 2, tmp = 0;
            
            while(fibo < n){
                if(fibo%2 == 0)
                    sum += fibo;
                
                tmp = prev;
                prev = fibo;
                fibo += tmp;
            }
            
            System.out.println(sum);
        }
    }
}
cs



- 주의할 점!

  같은 연산을 반복 수행한다고 해서 재귀함수로 구현하면 쓰뜌삣!!!!!!!!!!!! 그러면 공간복잡도 꽝꽝꽝




천천히, 꾸준히 syaring's study

문제 원본

https://www.hackerrank.com/contests/projecteuler/challenges/euler001


문제 요약

N 미만의 자연수 중, 3, 5의 배수를 모두 합한 값을 구하는 문제.



- Solution.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.io.*;
import java.util.*;
 
public class Solution {
 
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        long t = in.nextLong();
        
        for(long a0 = 0; a0 < t; a0++){
            long n = in.nextLong();
          
            n--;
            
            long q3 = n/3;
            long q5 = n/5;
            long q15 = n/15;
                
            long sum3 = 3*(1+q3)*q3/2;
            long sum5 = 5*(1+q5)*q5/2;
            long sum15 = 15*(1+q15)*q15/2;
            
            System.out.println(sum3+sum5-sum15);
        }
        
 
    }
}
cs



- 맨 처음에 문제를 풀었을 때, 수학계산따위 안하고 무식하게 2중 for문을 썼다.. 결과는 당연히 time out...

1
2
3
4
java머for(int i = 0; i<n; i++){
                if(i%5 == 0 || i%3 == 0)
                    sum+=i;
}
cs



- 현재 구현한 코드의 수학 계산

N 미만의 자연수 중 3의 배수의 합 (예 : N=30)

sum = 3 + 6 + 9 + 12 + .... + 27 = 135


그런데 일일이 각 숫자를 더하는 것은 굉장히 비효율적이다.


sum = 3 * (1 + 2 + 3 + ..... + 9),   9는 (30 - 1)/3의 몫


그리고 이미 알고있는 1부터 X까지의 합을 구하는 공식  (1 + M) * M/2를  (1 + 2 + 3 + ..... + 9)에 적용하면


sum = 3 * (1 + 9) * 9/2 = 135


즉, N 미만의 자연수 중 a의 배수의 합(sum)

sum = a * (1 + (N-1)/a) * (N-1)/a/2,   여기서 / 는 컴퓨터 기준, 몫



- 처음에 제공된 포맷에 Int로 되어있어서 크게 신경을 안쓰고 코딩했는데, Integer로 하니까 Wrong Answer 오류가 떴다. Integer → Long으로 수정하니 제대로 돌아간다.




천천히, 꾸준히 syaring's study



| Github에 유니티 프로젝트 push 하기 | ____ Windows, Git Desktop 기준




1. Github에 reposiroty 생성!


참고 ) Github 계정 생성 및 설정 : https://git-scm.com/book/ko/v2/GitHub-계정-만들고-설정하기

        Github 리포지터리 생성 : https://git-scm.com/book/ko/v2/GitHub-GitHub-프로젝트-관리하기



- 생성할 때 Add .gitignore를 'Unity'로 설정


Create repository!




2. Unity 프로젝트 설정하기


- 프로젝트 상단의 [Edit → Project Settings → Editor] 클릭하면 우측 Inspector에 다음과 같이 나타난다.

   Version Control ; Mode : 'Visible Meta FIles'

   Asset Serialization ; Mode : 'Force Test'


- 변경 후 우측 상단 File → Save Project 로 저장!




3.  Github의 원격저장소를 로컬저장소로 clone 하기


1. 레포지터리 확인


2. Github Desktop 다운


3. GIthub Desktop 열기


4. 원격저장소의 repository를 로컬저장소로 clone 하기


5. clone 완료!



☞ git bash에서 하는 법 (훨씬 간단..)

1
2
3
$ cd [local path]
$ git init //로컬 저장소로 쓰기 위한 
$ clone [repository address]
cs




4. unity project를 로컬저장소에 복사하기


프로젝트 폴더를 통째로 copy해서 로컬저장소의 하위폴더로 paste!




5. 원격 저장소에 push하기


최초 커밋하기. Fetch origin을 안하면 원격 저장소에 push되지 않는다.


참고!

☞ 이후의 유니티 작업은 로컬path의 유니티 프로젝트에서 하는게 좋음! 그래야 바로바로 변경사항이 감지되기 때문에 ^.~

☞ 최초 커밋이 아니라면 굳이 Temp 폴더나 Library 폴더의 내용을 모두 커밋 할 필요 없다.

    Assets, Project Settings의 변경사항만 커밋하면 나머지는 유니티엔진에서 알아서 설정해줌!!! (왼쪽 체크박스로 설정)


☞ git bash에서 하는 법

1
2
3
4
5
6
$ git status //변경사항 확인
$ git push [file name] //커밋할 파일 나열, 모두 할 경우 . 사용
$ git status //스테이지에 올라왔는지 확인
$ git commit -"[commit message]" // git commit으로 상세히 써도 됨
$ git status //커밋 되었는지 확인
$ git push //원격저장소에 push
cs






천천히, 꾸준히 syaring's study

참고 : https://www.youtube.com/watch?v=qBcsczLJkUY


피드백 언제나 환영합니다!

+ Recent posts