[ACM] 2007 Problem A - Molar mass
Posted 2008/07/09 14:47UVA 홈페이지가 이상한 관계로, ACM 문제들을 풀기로 했다. 쉬운문제에서 어려운문제 순으로.. ㅎ
2007년도 A번문제는 원소들의 가중치의 합계를 구하는 문제로 입력받은 String에서 원소와 숫자를 적절히 잘라주는것이 중요하다.
StringTokenizer를 사용하면 이것을 쉽게 자를 수 있다.
먼저 입력받은 String에서 각 원소가 몇개씩 존재하는지 통계를 계산한 후에 결과 가중치를 계산한다.
import java.util.Scanner;
import java.util.StringTokenizer;
public class A {
Scanner in = new Scanner(System.in);
int[] weight;
public A() {
int n = in.nextInt();
for(int i=0 ; i<n ; i++) {
start();
print();
}
}
public void start() {
weight = new int[26];
StringTokenizer tokenizer = new StringTokenizer(in.next(), "CHON", true);
String str1;
String str2 = "";
while(tokenizer.hasMoreTokens()) {
str1 = tokenizer.nextToken();
if(!isAtomic(str1)) {
weight[str2.charAt(0)-'A'] += Integer.parseInt(str1);
str2 = "";
}
else {
if(!str2.equals(""))
weight[str2.charAt(0)-'A'] += 1;
str2 = str1;
}
}
if(!str2.equals(""))
weight[str2.charAt(0)-'A'] += 1;
}
public void print() {
System.out.println(
weight['C'-'A']*12.01 +
weight['H'-'A']*1.008 +
weight['O'-'A']*16 +
weight['N'-'A']*14.01
);
}
public boolean isAtomic(String str) {
return str.charAt(0) <= 'Z' && str.charAt(0) >= 'A';
}
public static void main(String[] args) {
new A();
}
}
import java.util.StringTokenizer;
public class A {
Scanner in = new Scanner(System.in);
int[] weight;
public A() {
int n = in.nextInt();
for(int i=0 ; i<n ; i++) {
start();
print();
}
}
public void start() {
weight = new int[26];
StringTokenizer tokenizer = new StringTokenizer(in.next(), "CHON", true);
String str1;
String str2 = "";
while(tokenizer.hasMoreTokens()) {
str1 = tokenizer.nextToken();
if(!isAtomic(str1)) {
weight[str2.charAt(0)-'A'] += Integer.parseInt(str1);
str2 = "";
}
else {
if(!str2.equals(""))
weight[str2.charAt(0)-'A'] += 1;
str2 = str1;
}
}
if(!str2.equals(""))
weight[str2.charAt(0)-'A'] += 1;
}
public void print() {
System.out.println(
weight['C'-'A']*12.01 +
weight['H'-'A']*1.008 +
weight['O'-'A']*16 +
weight['N'-'A']*14.01
);
}
public boolean isAtomic(String str) {
return str.charAt(0) <= 'Z' && str.charAt(0) >= 'A';
}
public static void main(String[] args) {
new A();
}
}
'C.S.E > Algorithm' 카테고리의 다른 글
| PKU Judge Online 소개 (0) | 2008/07/23 |
|---|---|
| [ACM] Problem B. Editor (0) | 2008/07/12 |
| [ACM] 2007 Problem A - Molar mass (0) | 2008/07/09 |
| [IBM Developer Works]초보개발자 코드 트레이닝 Part 2. (0) | 2008/05/16 |
| [UVA] 10198 Counting (0) | 2008/05/06 |
| [UVA] 10099 The Tourist Guide (0) | 2008/05/04 |
- Filed under : C.S.E/Algorithm
- Tag : ACM, java
- Comment Trackback
A_MOLAR.pdf
이올린에 북마크하기