Conversions(CONVERT) 정답 코드
난이도 ★☆☆☆☆
힌트
문자열 처리에 주의할 것. |
이하는 코드입니다.
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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54 |
#include <stdio.h>
#include <string>
#include <iostream>
#define KG_TO_LB 2.2046
#define LB_TO_KG 0.4536
#define L_TO_G 0.2642
#define G_TO_L 3.7854
#pragma warning(disable:4996)
using namespace std;
int main() {
int N;
scanf("%d\n", &N);
for (int i = 1; i <= N; i++) {
string input;
getline(cin, input);
int pivot = input.find(' ');
string left (input, 0, pivot);
string right(input, pivot + 1, string::npos);
float num = atof(left.c_str());
float resultNum;
string resultUnit;
if (right.compare("kg") == 0) {
resultNum = num * KG_TO_LB;
resultUnit = "lb";
}
else if (right.compare("lb") == 0) {
resultNum = num * LB_TO_KG;
resultUnit = "kg";
}
else if (right.compare("l") == 0) {
resultNum = num * L_TO_G;
resultUnit = "g";
}
else if (right.compare("g") == 0) {
resultNum = num * G_TO_L;
resultUnit = "l";
}
else {
resultNum = 0.;
resultUnit = "";
}
printf("%d %.4f %s\n", i, resultNum, resultUnit.c_str());
}
return 0;
} |
cs |
'뿌리튼튼 CS > Algorithm' 카테고리의 다른 글
codility - OddOccurrencesInArray 정답 및 해설 (0) | 2017.06.06 |
---|---|
codility - BinaryGap 정답 및 해설 (0) | 2017.06.06 |
Endians(ENDIANS) 정답 코드 (0) | 2015.10.09 |
Mispelling(MISPELL) 정답 코드 (0) | 2015.04.10 |
터보모드(TURBOMODE) 정답 코드 (0) | 2015.04.10 |
Endians(ENDIANS) 정답 코드
난이도 ★☆☆☆☆
힌트
오버플로우(overflow)에 주의할 것. |
이하는 코드입니다.
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 |
#include <stdio.h>
#include <math.h>
#pragma warning(disable:4996)
unsigned long convert(const unsigned long num) {
unsigned long first = num / pow(2., 24);
unsigned long second = (num / pow(2., 16)) - (first * pow(2., 8));
unsigned long third = (num / pow(2., 8)) - (second * pow(2., 8)) - (first * pow(2., 16));
unsigned long fourth = num % (unsigned long)pow(2., 8);
return first + second * pow(2., 8) + third * pow(2., 16) + fourth * pow(2., 24);
}
int main() {
int C;
scanf("%d", &C);
while (C-- > 0) {
unsigned long num;
scanf("%lu", &num);
printf("%lu\n", convert(num));
}
return 0;
} |
cs |
'뿌리튼튼 CS > Algorithm' 카테고리의 다른 글
codility - BinaryGap 정답 및 해설 (0) | 2017.06.06 |
---|---|
Conversions(CONVERT) 정답 코드 (0) | 2015.10.09 |
Mispelling(MISPELL) 정답 코드 (0) | 2015.04.10 |
터보모드(TURBOMODE) 정답 코드 (0) | 2015.04.10 |
HOTSUMMER 정답 코드 (0) | 2015.04.10 |
[JavaScript] DOM 엑세스 줄이기 (Reduce DOM Access)
1 2 3 4 5 6 7 8 9 | var obj = document.getElementById("foo"); obj.value = "hi"; ... obj.value = "hello"; ... | cs |
Android 의 ViewHolder 와 거의 같은 개념이다.
DOM 을 뒤져서 get Element 하는 코드는 매우 느리기 때문에, (Android 에서는 findViewById)
해당 element 를 다시 참조할 일이 있다고 예상되면
다시 찾지말고 기존에 찾았던 것을 변수에 저장해놓고 다시 이용한다.
출처 : http://www.w3schools.com/js/js_performance.asp
ps. 드디어 JS Tutorial 정주행 완료! ^^
'뿌리튼튼 CS > Web' 카테고리의 다른 글
[JavaScript(ES6)] Proxy (0) | 2016.05.19 |
---|---|
[JavaScript(ES6)] Iterators and Generators (0) | 2016.05.16 |
[JavaScript] Loose Comparison vs. Strict Comparison (0) | 2015.07.31 |
[JavaScript] 함수에 인자에 default 값을 넣어주자 (Use Parameter Defaults) (0) | 2015.07.31 |
[JavaScript] === 를 쓰자 (Use === Comparison) (0) | 2015.07.31 |
Array size in Loops
for (int i = 0; i < mArrayList.size(); i++) { | cs |
w3schools 에서 JavaScript 를 공부하다가, 이 흔한 반복문에 의문을 제기하는 글을 보았다.
size() 메서드를 매 loop 마다 실행하는 것은 낭비라는 것이다.
그들은 아래와 같이 개선하는 것을 제안했다.
①
1 2 | int n = mArrayList.size(); for (int i = 0; i < n; i++) { | cs |
② 혹은 scope 최소화 측면에서 조금더 개선된
for (int i = 0, n = mArrayList.size(); i < n; i++) { | cs |
하지만.
그렇다면 내가 봐왔던 뛰어난 코드들은 왜 저런식으로 코딩하지 않았을까?
의문이 들어 ArrayList 소스코드를 직접 열어보았다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | package java.util; public class ArrayList<E> extends ... { ... private int size; ... ... public int size() { return size; } ... } | cs |
그렇다. size() 는 단순히 size 변수값을 반환하는 O(1) 의 메서드인 것이다.
당연하게도, 미련하게 처음부터 count 하는 O(n) 이 아닌 것이다.
게다가 JVM 이 똑똑하여서 loop 내에서 size 값이 변하지 않는다는 것을 알고 있으며,
따라서 자동으로 최적화를 한다고 한다.
덧붙여서, ArrayList 객체가 아닌 일반 array (ex. int[]) 의 length 도 같은 방식으로 구현이 되어있다고 한다.
나의 결론 :
좋은 접근이지만 결론적으로는 가독성만 떨어질 뿐이다.
출처들
그들의 주장들:
http://www.w3schools.com/js/js_performance.asp
http://egloos.zum.com/benelog/v/1382604
우리의 주장들:
'뿌리튼튼 CS > Java' 카테고리의 다른 글
생성자를 쓰는 이유. 생성자의 필요성 (Why use constructors) (0) | 2016.08.02 |
---|---|
심심풀이 문제1 - Object.equals() (0) | 2016.07.16 |
[Collection] ArrayList vs Vector (0) | 2016.02.01 |
String vs StringBuilder vs StringBuffer (2) | 2016.01.28 |
Thread ID로 thread 찾기 (get thread by id) (0) | 2015.07.27 |