Posts

Showing posts from September, 2015

알고리즘 문제 풀어보자. 은하 전쟁!

* 문제: 은하 전쟁 은하계의 행성들이 전쟁을 벌이고 있다. 이 행성들은 너무 멀어서 아주 빠른 미사일로만 서로를 공격한다. 미사일은 100% 명중하며 기반시설에 일정한 피해를 입힌다. 기반시설 N 개일 때 단위시간당 N/10 개의 미사일을 생성한다. 10보다 작은 규모에서는 미사일이 생성되지 않는다. 미사일은 단위시간당 단위거리르 가며 N개의 미사일은 N개의 기반시설을 파괴한다. 기반시설은 복구되지 않으며 기반시설이 0이 되면 그 행성은 진다. 다음 데이터에는 각 행성의 위치와 초기 기반시설 규모가 적혀 있다. 모든 행성은 적대 관계이며, 가장 가까운 행성이 질 때까지 그 행성만 공격한다. 단, 공격자가 미리 상대가 질 것을 예상하고 목표를 수정하지는 않는다. 실제로 대상이 파괴될 때까지 공격을 계속한다. 전쟁 결과 마지막에 남는 별의 좌표를 적어라. (만약 살아남는 별이 없으면 '없음'이라고 적는다.) * 위치, 시간, 규모 등은 모두 정수이다. * 피격은 단위 시간 1이 흐른 뒤에 일어난다. * 단위 시간 안에 일어날 수 있는 피격이 모두 적용된 다음 미사일을 발사한다. * 행성 기반시설이 0이 되어도 날아가던 미사일은 계속 날아가 목표를 타격한다. * 미사일이 모두 없어져야 전쟁이 끝난다. -- 데이터 포맷 -- <별 위치 X> <별 위치 Y> <기반 시설 규모> <별 위치 X> <별 위치 Y> <기반 시설 규모> ... 예) 0 10 100 10 0 200 의 답은 (10, 0) * 풀어보기 #include <iostream> #include <vector> #include <math.h> using namespace std; int starNumber = 0; // 행성 수 vector<int> X; // 위치 X vector<int> Y; // 위치 Y vector

알고리즘 연습 (셀프 넘버 합 구하기)

넥슨 프로그래머 기출 문제 풀어보기 출처:  http://prorion.tistory.com/36 * 문제 어떤 자연수 n이 있을 때, d(n)을 n의 각 자릿수 숫자들과 n 자신을 더한 숫자라고 정의하자. 예를 들어 d(91) = 9 + 1 + 91 = 101 이 때, n을 d(n)의 제네레이터(generator)라고 한다. 위의 예에서 91은 101의 제네레이터이다. 어떤 숫자들은 하나 이상의 제네레이터를 가지고 있는데, 101의 제네레이터는 91 뿐 아니라 100도 있다. 그런데 반대로, 제네레이터가 없는 숫자들도 있으며, 이런 숫자를 인도의 수학자 Kaprekar가 셀프 넘버(self-number)라 이름 붙였다. 예를 들어 1,3,5,7,9,20,31 은 셀프 넘버 들이다. 1 이상이고 5000 보다 작은 모든 셀프 넘버들의 합을 구하라. * 풀어보기 #include <iostream> using namespace std; class Generater { public: int getSum(int number) { int d1, d2, d3, d4; int tempSum=0, result=1, count=0; for (int j = 1; j < number; j++){ count=0; for (int i = 1; i < j; i++) { tempSum=0, d1=0, d2=0, d3=0, d4 = 0; if(i<10){ d1 = i; } else if(i<100){ d1 = i / 10; d2 = i % 10; } else if(i<1000){

TodCoder << 알고리즘 연즘 (Substitute)

Class Name : Substitute OS X_ X Code에서 정수형(int)를 실수형(string)으로 바꾸는 부분이 어려웠다. 비공식 라이브러리 stoi 등을 사용하면 좋을텐데... 처음 들어보는  ostringstream 를 사용! #include <iostream> #include <sstream> using namespace std; class Substitute { public: int getValue(string key, string code){ string temp, intTemp = " "; ostringstream convert; for(int i = 0; i <code.size(); i++){ for(int j = 0; j < key.size(); j++){ if(code.at(i) == key.at(j)) { convert.str(""); convert.clear(); if(j == (key.size()-1)){ temp.append("0"); continue; } else { convert << j+1; convert.flush(); temp.append(convert.str()); } } } } return stoi(temp) ; } };