2018년 6월 24일 일요일

매일프로그래밍 - 실리콘밸리 패키지 문제 12.


////////////////////////////////////////////
// 매일 프로그래밍 12주차.
// Author : RaviKim
// Copyright @ dev@mailprogramming.com 에 있습니다.
// 
// Date. 18-06-25 
//
// /////////////////////////////////////////

#include <iostream>
using namespace std;

int main(void){

/* 입력받을 정수와 중간 곱하기를 계산할 정수를 선언합니다. */
int cnt = 0;
int semiResult = 1; 

cin >> cnt; // input받을 배열 정수의 개수를 입력받습니다.


int *Array = new int[cnt+1]; // input값들을 저장하는 배열.
int *Result = new int[cnt+1]; // 곱하기 계산된 값들을 저장하는 배열.

/*정수들을 입력 받습니다. */
for(int i = 0; i < cnt; i++){
cin >> Array[i];
}

/* 입력받은 정수들을 출력합니다. */
cout << " InPut : " ;
for( int i = 0; i < cnt; i++){
cout << Array[i] << " ";
}
cout << endl;

/* 
실 계산하는 메인 부분.
먼저 해당 원소를 제외한 나머지 원소들의 곱셈을 구해서 Result 배열에 넣습니다.
다만 이러한 문제풀이는 답은 맞지만 문제에서 요구하는 O(n) TimeComplexity를 만족하지 않습니다.
TimeComplexity를 해결하는 방법은 다음 포스트에서 구현하겠습니다.
*/

for(int i = 0; i <cnt;i++){
for(int j = 0; j< cnt; j++){
if(i !=j) semiResult *= Array[j];
Result[i] = semiResult;
}
semiResult = 1; // 초기화.
}

cout << " OuPut : " ;
for( int i = 0; i < cnt; i++){
cout << Result[i] << " ";
}
cout << endl;


delete[] Array;
delete[] Result;
}

2018년 6월 19일 화요일

Git Organization // 깃 통합관리 기법


이번에 스터디에와 같은 그룹계정에서 사용이 유용한 Git Organization 대해서 설명을 하고자 한다.

Organization 만드는 작업은 다음과 같다.

먼저 Git 계정에 접속해 하단의 +버튼을 누르면 아래와 같은 New Organization 나오게 된다.




다음 나오는 Organization name에는 모임명의 이름을 넣는다.
(Git URL 뒤의 이름이 적용되는 부분이다아래와 같이 적용하면
https://github.com/SSAlgoStudy  같이 적용이 되어진다.)

Biling email 경우, 오픈소스에는 무료 라이선 적용이며 하단의 Free버튼을 선택하면 비용이 청구되지 않는다.




  다음 나오는 설문지는 사용자 판단에 따라 넘어가도 문제는 없다.

이 다음 내용은 Git 개인 계정을 만드는 과정과 동일하다.

2018년 6월 5일 화요일

[cent os] vim 깨짐 / 하얀 공백 증상 해결

간혹 vim 을 사용하다가 스크롤을 내리면 흰색의 공백이 생기면서 가독성을 떨어뜨리는 경우가 많아 이번기회에 문제를 해결해보기로 하였다.

현재 회사 워크스테이션 상에서 발현되는 문제는 2가지.

1. 문자의 겹침증상

2. 스크롤시 or 드래그 블록 설정시에 문자의 종료되는 부분 이후로 흰색 공백이 생겨 점박이처럼 배경화면이 깨지는 증상.


먼저

1. 문자의 겹침증상을 해결해보고자 하였고, 이에 대해서 구글링을 진행해서 비슷한 사례를 찾아 보았다. 

 https://askubuntu.com/questions/659357/overlapping-characters-in-terminal

사례의 확인과 기타 다른 부분을 확인시에 이를 해결하는 방법은 글자의 폰트를 수정하여 자간의 간격을 확보하는 방법이었다.


2. 흰색 공백문제


이를 해결하기위하여 vimrc (혹은 bashrc)의 설정을 수정하여 해결하였다.

2018년 6월 4일 월요일

G++ 컴파일 / c++11 standard 컴파일 방법

R-value 참조 문구 해결하는 방법









g++ *.cpp -std=c++11

명령어를 통해 c++11 표준으로 변경해야 정상적으로 R-value참조를 사용할 있음



로그인쉘, 서브쉘 차이점.

로그인쉘에서 실행 : source ./test.sh
 
서브쉘에서 실행    : sh ./test.sh
차이점은
서브쉘에서 실행된 내용이나 실행환경은 서브쉘이 종료되는 순간 없어지는데
로그인쉘에서 실행된 내용이나 실행환경은 로그아웃 할 때까지 없어지지 않는다는데에 있습니다.

두 가지 경우 실행시 발생하는 과정을 자세히 설명하면

sh ./test.sh 실행을 하면
현재 쉘 하위로 쉘(서브쉘)이 하나 더 뜹니다.
cp, cd, cp 명령이 실행됩니다.
cd 명령 때문에 현재 작업중인 디렉토리 위치가 변경되었습니다.
서브쉘이 종료하면 상위의 원래 쉘(로그인쉘)로 돌아가게 됩니다.
서브쉘이 종료되면 현재 디렉토리 위치 정보는 없어지고
서브쉘이 시작된 위치로 돌아가게 됩니다.
그렇기 때문에 sh ./test.sh 을 실행한 후에는 작업중인 디렉토리 위치가 변경되지 않습니다.

하지만,
source ./test.sh 을 할 경우에는
서브쉘에서 해당 스크립트가 동작하지 않고, 로그인쉘에서 동작하기 때문에
cd 명령에 따라 작업중인 디렉토리 위치가 변경되게 됩니다.
source 명령 뒤에 오는 스크립트 첫줄에는 #!/bin/bash 가 필요없습니다. 
>> 경로 설정 없이 바로 적용하여 사용이 가능하므로.(?)
* 현재 로그인쉘 확인하기
    – echo $SHELL

Top Corder Algorithm Training 연습 1일차

Top Corder Algorithm Training 연습 1일차.


Windows 와 Unix 상에서 LF/CR의 차이점


윈도우즈와 유닉스는 전통적으로 아스키 파일에 대한 처리가 다름.

개행문자에 대한 시선차이가 존재하는 것으로
개행문자의 시작을 LF 가지고 하느냐, LF/CR 하느냐의 차이.

LF Line Feed, 다음 줄로 바뀌는 것으로 아스키코드 10
CR Carriage return으로 아스키코드는 13.

정확히 따지면 LF/CR 사용해야 다음줄의 칼럼으로 가는 것이나, 유닉스에서는 일반적으로 LF만으로 LF/CR기능을 표현했고, 윈도우즈는 문자를 사용해서 표현하기 때문에 별도의 문자열 처리를 하지 않더라도 상호 텍스트 문서의 교환에 불편함이 있을 있음.




상기의 그림에서, #define ENTER 10 이란 코드는 ENTER 값의 아스키 코드를 디파인하는 코드인데, 윈도우에서는 13으로 설정해야지만 정상적으로 종료하는 코드를 작성할 있다.


2018년 6월 3일 일요일

centos7 yum 명령어 안될때[Could not retrieve mirrorlist..]


vmware에 최소한의 설정으로 centos7을 설치했더니 wget이 작동하지 않아서 yum으로 설치 시도

 
#yum install wget

 
그랬더니 아래와 같은 문구가 뜬다....




해서 구글링을 해보니 ~/etc/resolv.conf 파일에서 servername 주소를 추가해줘야한다 등 이런 저런 방법이 있었지만 모두 실패.....

 
알고보니  centos6 부터인가 방법이 바뀌었다고 한다.

 
해결법

 
# vi /etc/sysconfig/network-scripts/ifcfg-ens33 로 들어가서 맨 밑에 있는 

 
ONBOOT=no 를 yes로 바꿔주고 저장 후 나감

 
# dhclient
# yum update
# yum install wget

 

centos virtualBOX E_FAIL (0x80004005) issue fix


CENT OS 에는 zip unzip 없어서 별도로 yum 명령어를 통해서 인스톨 해서 사용해야함

현재 vm Virtual Box 상태에서
The virtual machine 'centOS' has terminated unexpectedly during startup with exit code -1073741819 (0xc0000005). More details may be available in 'C:\Users\hskim\VirtualBox VMs\centOS\Logs\VBoxHardening.log'.



결과 코드:
E_FAIL (0x80004005)
구성 요소:
MachineWrap
인터페이스:
IMachine {85cd948e-a71f-4289-281e-0ca7ad48cd89}





이러한 에러가 발생되어짐
이전의 문제는 VM박스를 업데이트 함으로써 수정되었지만, 현재의 문제는 어떻게 처리해야하는지 지금 확인하는 중에 있음 차후 업데이트

>VMBOx 5.2.x 릴리즈 프로그램에서 자주 발생하는 문제로 보이며 이에 대한 해결책은 다운그레이드.. 뿐인것을 확인하여 실시 조치함.

>> 18.06.20 ADD.
위와 같은 경우가 특히 회사에서 더 빈번하게 일어남을 느껴서 테스트해보니 회사에 DRM 관련된 보안프로그램이 설치되어져 있으면 한번씩 일어나는 일이었다는 점을 추가한다.

그냥 맘편하게 vmware 쓰는걸 추천드립니다..

백준 1001번 문제풀이

백준 1001번 문제 풀이

문제 : https://www.acmicpc.net/problem/1001





#include <iostream>
using namespace std;

int main(void)
{
    int numA, numB = 0;
 
    cin >> numA >> numB; // 두 수를 입력 받습니다.
 
    cout << numA - numB; // numA 에서 num B를 빼고, 그 값을 출력합니다.
 
}

백준_1000번

백준_1000번 문제

문제 : https://www.acmicpc.net/problem/1000


#include <iostream>

using namespace std;


int main(void)
{
    int A, B    =   0;
    cin >> A >> B;

    cout << A+B;

}

매일프로그래밍 실리콘밸리 패키지 9번

이 문제는 매일프로그래밍에서 출제한 문제로, 모든 문제의 저작권은 매일프로그래밍에 있다는 것을 밝힙니다.

안녕하세요, 매일프로그래밍 이번주 문제입니다.
정수 배열(int array)이 주어지면 0이 아닌 정수 순서를 유지하며 모든 0을 배열 오른쪽 끝으로 옮기시오. 단, 시간복잡도는 O(n), 공간복잡도는 O(1)여야 합니다.

예제)
Input: [0, 5, 0, 3, -1]
Output: [5, 3, -1, 0, 0]

Input: [3, 0, 3]
Output: [3, 3, 0]
 풀이를 보고 싶으시다면 풀이보기를 눌러주세요. 

매주 월요일 아침 8시에 문제와 풀이를 보내드립니다.
문제가 있으시면 언제든 dev@mailprogramming.com 으로 이메일 보내주세요. 



해결 : C++


#include <iostream>
using namespace std;

int main(void) {
int cnt = 0;
cin >> cnt;

int *SaveArray = new int[cnt + 1];
cout << "INPUT : ";
for (int i = 0; i < cnt; i++) {
cin >> SaveArray[i];
}
int count = cnt - 1;
/*Repeat check */

while(count--){
for (int i = 0; i < cnt; i++) {
int temp = 0;
if (SaveArray[i] == 0 && (i+1) != cnt) {
temp = SaveArray[i+1];
SaveArray[i + 1] = 0;
SaveArray[i] = temp;
}
}
}
cout << "OUTPUT : ";

for (int i = 0; i < cnt; i++) {
cout << SaveArray[i] << " , ";
}
}

Heic to jpg 변환기 Mac Automator를 활용해서 만들어보기.

Heic to jpg 변환기 Automator를 활용해서 만들어보기!! 우선 이 글은 기본적인 shell script를 이해하는 분들이 활용하기 매우 좋습니다. 아이폰의 설정 - 카메라 - 포맷 분을 보면 아래와 같습니다. ...