콜라츠 추측 문제 및 나의 풀이

안녕하세요

오늘도 잠깐 알고리즘 풀이법을 올려봅니다.

이건 레벨2치고 쉬어서 금방 풀어 기분 좋게 올립니다.


일단 문제가 다음과 같습니다.

'1937년 Collatz란 사람에 의해 제기된 이 추측은, 입력된 수가 짝수라면 2로 나누고, 홀수라면 3을 곱하고 1을 더한 다음, 결과로 나온 수에 같은 작업을 1이 될 때까지 반복할 경우 모든 수가 1이 된다는 추측입니다. 예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. collatz 함수를 만들어 입력된 수가 몇 번 만에 1이 되는지 반환해 주세요. 단, 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요.'

문제가 조금 설명충이고 길어서 복잡해보이지만 정말 단순합니다.

if문과 반복문만 적절히 사용하면 초보자도 쉽게 풀수 있는 문제입니다.

일단 제 답안입니다.


class Collatz {
public int collatz(int num) {
int answer = 0;
int cnt=0;
while(cnt < 500){
cnt++;
if(num%2==0){
num = num/2;
}else if(num%2==1){
num = (num*3)+1;
}
if(num==1){
answer = cnt;
return answer;
}
}

answer = -1;
return answer;
}

// 아래는 테스트로 출력해 보기 위한 코드입니다.
public static void main(String[] args) {
Collatz c = new Collatz();
int ex = 6;
System.out.println(c.collatz(ex));
}

}


언젠가 알고리즘도 많이 풀고 궁리하다보면
높은 레벨의 문제도 쉽게 풀거라 믿습니다.
모두 힘냅시다!!



자바 평균구하기 문제

안녕하세요

이번 시간에는 {*}helloworld에서 올라온 문제를 하나 풀이하는 시간을 가지겠습니다.

일단 저도 개발을 썩 잘하는것이 아니라서

제가 올린게 최고의 정답이라고 생각하지 않습니다


일단 질문이 아래와 같습니다

'def average(list):
함수를 완성해서 매개변수 list의 평균값을 return하도록 만들어 보세요.
어떠한 크기의 list가 와도 평균값을 구할 수 있어야 합니다'


이에 대한 저의 풀이는 아래와 같습니다.

=================

public class GetMean {
    public int getMean(int[] array) {
    int result = 0;
    for(int i=0; i<array.length; i++){
    result+=array[i];
    }
        return (result) / array.length;
    }
   
    public static void main(String[] args) {
        int x[] = {5, 4, 3};
        GetMean getMean = new GetMean();
        // 아래는 테스트로 출력해 보기 위한 코드입니다.
        System.out.println("평균값 : " + getMean.getMean(x));
    }
}
=================

문제를 풀고 나서 정답이 되고 다른 사람들의 문제 풀이를 봤는데

그중에서 댓글이 가장 많고 참신했던 것이 있었습니다.

저는 여러줄로 처리한걸 이 사람은 한줄로 처리했네요;;




라이브러리를 사용해서 해결한건데, 신박하네요 참 ㄷㄷ

어쨋든 문제가 주어지면 어떤 방법을 써서 해결하는것도 중요하죠.





CentOS 유선 랜 설정 하기

안녕하세요

이번 시간에는 CentOS 유선 랜 설정하는 방법에 대해 리뷰하겠습니다.

앞서 CentOS 설치를 끝나고 ID는 'root'로 비밀번호는 개인이 정한걸로 입력해서

접속하면 먼저 해야할게 인터넷이 되게끔 설정 해주는게 먼저입니다.

인터넷이 되야지 요즘은 뭘 할수 있는 시대이죠 ㅜ













일단 커맨드 창에 'ifconfig-a'를 검색하면 네트워크 디바이스 장치들이 검색됩니다

eth0은 이더넷이고, lo는 자기 자신에게 송수신하는 테스트 디바이스,

그리고 목록에는 없지만 wlan과 같은 무선 디바이스도 있습니다.


일단 사내에서는 리눅스 서버로 돌리는 노트북에 유선랜을 꽂고 나서
'vi /etc/sysconfig/network-scripts/ifcfg-eth0'를 입력하면
네트워크 디바이스를 설정하는 파일이 나옵니다.

거기에서 아래와 같이 수정합니다
=====================================
DEVICE=eth0
TYPE=Ethernet
IPADDR=211.xxx.xxx.xxx
NETMASK=255.xxx.xxx.xxx
GATEWAY=211.xxx.xxx.xxx
DNS1=164.xxx.xxx.xxx
DNS2=168.xxx.xxx.xxx
UUID=13b809d9-67c3-4ac2-8789-xxx.xxx.xxx
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
HWADDR=6C:62:xx:xx:xx:xx
DEFROUTE=yes
PEERDNS=no
PEERROUTES=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=no
NAME="System eth0"
====================================

제가 xxx 로 표시한것은 저대로 입력하라는게 아니고 원래 부여된 고유의 값이나
자신의 네트워크 설정 환경에 맞춰서 입력하라는 것입니다.

위에서 네트워크 디바이스 설정을 했으면, 이후에 네트워크 설정을 해야겠죠?
커맨드 창에 vi /etc/sysconfig/network 를 입력하시고 아래와 같이 바꿉니다

==========================================
NETWORKING=yes
NETWORKING_IPV6=no
HOSTNAME=xxxxxx
GATEWAYDEV=eth0
==========================================

HOSTNAME 역시 자신의 환경에 맞는 이름을 입력하세요.


지금까지 네트워크 디바이스 및 네트워크 설정을 했습니다.
자 그럼 이제 네트워크가 되는지 확인을 해야겠죠?

'ifconfig eth0 up' 명령어로 이더넷 장치를 구동 시키고
'service network start' 명령어로 네트워크를 시작합니다.

그리고 서버 아이피나 근처 다른 아이피를 쓰는 디바이스에게
'ping 211.xxx.xxx.xxx'을 날립니다.

커맨드 창에 아래와 같이 나온다면 성공입니다
5 packets transmitted, 5 received, 0% packet loss, time 4369ms
rtt min/avg/max/mdev = 0.028/0.063/0.073/0.017 ms

방금전에 ping을 날린건 내부 통신을 확인한거고
이번에는 naver.com과 같은 외부 통신을 확인해봅시다

'nslookup naver.com'을 입력하시고 아래와 같이 나오면 성공합니다
Non-authoritative answer:
Name: naver.com
Address: 125.209.222.142
Name: naver.com
Address: 125.209.222.141
Name: naver.com
Address: 202.179.177.21
Name: naver.com
Address: 202.179.177.22

잠깐 빼먹은 이야기가 있는데, 'nslookup naver.com' 입력했을 때
-bash: ns: command not found
위와 같은 커맨드가 나올 수 있습니다.
이건 nslookup 명령어를 수행할 패키지가 없는것인데
이때는 'yum install bind-utils' 를 입력하여 패키지를 설치하면 됩니다 ㅎ


CentOS 설치 방법 정리 - USB로 CentOS 운영체제를 설치해보자

안녕하세요

정말 오랜만에 글을 써보네요.

회사 일이 바쁘다보니 블로그 글을 많이 못썼네요.

오늘 포스팅은 얼마전 제가 회사에서 CentOS 운영체제로 리눅스 서버를 돌려 홈페이지를 나오게 하는 작업이 있어 그걸 한번 써볼까 합니다.

일단 이번 포스팅에서는 CentOS 설치 방법을 리뷰하겠습니다.


1.  CentOS ISO 파일을 다운받기

먼저 운영체제를 설치하기 위해서 iso 파일을 받을 필요가 있습니다.
















URL : http://vault.centos.org/6.6/isos/x86_64/
위의 주소에 들어가 CentOS-6.6-x86_64-minimal.iso 파일을 다운 받습니다.
minimal이 아닌 풀버전도 있지만 가볍게 쓰고 싶어서 회사에서도 minimal로
리눅스 서버를 돌리더군요.



2. UltlaISO 프로그램으로 CentOS ISO 파일을 굽기

이제 ISO 파일을 받았으면 흔히들 말하는 ISO 파일을 구워야 합니다.
ISO 파일을 구워주는 프로그램들이 많긴 하지만 저는 'UltlaISO'를 이용했습니다.

















url : https://ultraiso.ko.softonic.com/

위의 경로로 들어가면 해당 프로그램을 바로 다운받을 수 있습니다.

설치가 끝나고 프로그램을 실행하면

부팅 - 디스크이미지기록 으로 들어가면





















디스크 드라이브에 제가 F 드라이브에 있는 USB를 지정하고
쓰기를 누르면 CentOS ISO 파일을 구워줍니다.


3. BIOS(바이오스) 부팅 순서 설정

사실 이제 3번만 하면 다 한거나 다름없습니다.

2번까지 다 하셨다면 이제 컴퓨터를 재부팅 해줍니다.

재부팅 하고 'F2', 'DEL' 키를 누르면 BIOS 설정 화면이 나옵니다


















BIOS 화면에서 'Boot' 탭으로 들어가 디바이스 우선 순위를 하드디스크가 아닌
USB로 바꾸고 설정을 저장하고 재시작합니다.















이제 CentOS 설치 화면이 나오고 첫번째 줄을 선택하면
설치가 진행됩니다.

사실 이 이후부터는 일반 윈도우 운영체제 설치하는 것처럼
어렵지 않기 때문에 여기까지 글을 써보겠습니다.

다음 포스팅에서는 CentOS 운영체제에서 War 파일을 배포하여
홈페이지를 띄우는 법에 대해 리뷰하겠습니다.