Each new term in the Fibonacci sequence is generated by adding the previous two terms.
By starting with 1 and 2, the first 10 terms will be:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89, ...
By considering the terms in the Fibonacci sequence whose values do not exceed four million,
find the sum of the even-valued terms.
해석 :
피보나치 수열의 다음 수열은 이전의 두 수열을 더한 합과 같다
1과 2로 시작하여 처음 10번째까지의 수열은 다음과 같다:
1, 2, 3, 5, 8, 13, 21, 34, 55, 89
4백만이 넘지 않는 피보나치 수열이 있다고 가정할때
짝수인 피보나치의 수열을 합을 구하여라
코드는 아래와 같다
public static void main(String []args){
int sum = 0;
int f1 = 1;
int f2 = 1;
while(f1<4000000){
f1 = f1 + f2;
f2 = f1 - f2;
if(f1%2==0){
sum=sum+f1;
}
}
System.out.print(sum);
}
문제가 물어보는 것은 피보나치 수열을 짤 수 있느냐를 물어보는 것 같다.
int buf =0;
int f1 = 1;
int f2 = 1;
while(true){
buf = f2;
f2 = f1+f2;
f1 = buf;
}
1번째 줄은 임시 변수
2번째 줄의 f1은 피보나치 첫번째 수열인 1 3번째 줄의 f2는 피보나치 두번째 수열인 1이고
나머지는 일반적으로 간단하게 생각할 수 있는 변수를 3개를 사용하여 계속해서 피보나치 수열을 만들어가는 방법이다
(코드는 돌리지 마시길.. 무한 루프임ㅋㅋ)
하지만 조금 생각해보면 만들어질 새운 피보나치 수열은 현재 변수 2개로 만든다!
int f1 = 1;
int f2 = 1;
while(true){
f1 = f1 + f2;
f2 = f1 - f2;
}
main package는 독립적으로 실행할 프로그램으로 작성 시 package명을 main으로 설정합니다
2. Package import
fmt 라는 데이터의 I/O를 위한 함수들이 들어있는 패키지를 import 합니다
fmt package를 제외하고 표준 라이브러리에는 100개 이상의 패키지가 존재한다고 합니다
패키지 사용시 문법은 import "[package name]" 으로 적습니다. 꺽쇠, 중괄호, 대괄호 다 필요 없구요! 따옴표 사이에 이름만 적어주시면 됩니다. (이 부분은 C에서 넘어오신 분이면 헷갈리실 것 같습니다 보통 import 하실 때 표준라이브러리가 아닌 파일을 import 할때 사용하는 방식이고 표준라이브러리를 import할 경우 꺽쇠를 사용하니까요 ㅎㅎ)
3. Method definition
함수 선언에는 func 키워드를 붙여 함수를 선언 및 정의합니다.
여기서는 main package 에서 main함수를 선언 및 정의하여 독립적으로 구동가능하게끔 코딩되었습니다
내용은 fmt package의 내부 method인 Println을 사용해 Hello, world. 를 출력하는 것 입니다.
helloworld에서 문법 및 주의사항!
문장이 한줄에 두개이상 나오는 경우 외에는 문장끝에 세미콜론을 붙이지 않습니다.
func main() {
// 두 문장이 한 줄에 있기 때문에 구분하기 위해 세미콜론을 붙였습니다.
// 두 번째 문장은 뒤에 더이상 내용이 없기 때문에 세미콜론을 붙히지 않습니다.
fmt.Println("Hello, 세계"); fmt.Println("Hello, World")
}
함수 여는 중괄호가 func 키워드와 같은 줄에 있지 않으면 Syntax Error 발생
// Syntax Error 발생! 중괄호( { ) 는 반드시 func키워드가 오는 줄에 위치해야 합니다
func main()
{
fmt.Println("Hello, 세계")
}
// 옳은 예제
func main(){
fmt.Println("Hello, 세계")
}
실행!
위의 hello world 예제 소스를 helloworld.go 파일로 저장해 준 뒤 , 해당 파일이 있는 곳에서 아래와 같은 명령어로 컴파일 해줍니다.
go build helloworld.go
컴파일이 완료 되게 되면, 리눅스는 helloworld, 윈도우는 helloworld.exe라는 바이너리가 생성됩니다.