https://www.acmicpc.net/problem/1546
사이트에 C# 버그가 있어 정답처리는 되지 않았으나 빠르게 출력을 해야 하는 프로그램이라 시간을 check 하면서 진행했다.
C#의 시간 Check하는 법은?
- 알고리즘을 풀다보면 코드의 실행시간을 알아야하는 경우가 있다.
이는 코드 작성시, 딜레이가 발생하거나 어느 부분에서 오버해드가 발생하여 시스템을 느리게 하는지 알아내야 하는 경우도 있다. 중간중간 속도를 Check 하고 싶다면 Stopwatch class를 이용해 시간을 측정할 수 있다.
1
2
3
4
5
6
7
|
Stopwatch stopwatch = new Stopwatch(); //객체 선언
stopwatch.Start(); // 시간측정 시작
//측정하고자 하는거 위, 아래로 start, end!
stopwatch.Stop(); //시간측정 끝
System.Console.WriteLine(stopwatch.ElapsedMilliseconds);
|
cs |
- Stopwatch 클래스에 start 함수를 호출하면 시간측정을 시작
- Stopwatch 클래스에 stop 함수를 호출 하면 시간 측정이 끝
- ElapsedMilliseconds 변수에 측정한 시간이 저장되게 된다.
- 해당 변수에 값을 출력하면 된다. 시간은 ms단위로 저장이 되기 때문에 만약 초단위로 보고 싶다면 /1000을 하면 된다.
그래서 내가 C#으로 푼 소스는 다음과 같다
//입력받을 점수의 개수 int cnt = int.Parse(Console.ReadLine()); //점수 입력 var goal = Console.ReadLine().Split(" ").Select(s => double.Parse(s)).ToList(); //점수 정렬 goal.Sort(); //평균점수 double avg = goal.Select(s => s = (s / goal.Last()) * 100).ToList().Average(); //출력 Console.WriteLine(string.Format("{0:0.00000}", avg)); |
밑에 내용은 Python으로 푼 소스이다. (python은 정답처리 되었다~)
cnt = int(input()) lst = list(map(int, input().split(" "))) lst.sort()
result = 0 for i in range(cnt): result += (lst[i] / lst[cnt - 1]) * 100
print(result / cnt) |
'개발 > Algorithm' 카테고리의 다른 글
[Algorithm] 백준 알고리즘 등차수열 한수 / C# / Python (0) | 2020.06.07 |
---|---|
[Algorithm] 백준 알고리즘 셀프넘버 (0) | 2020.06.06 |
[Algorithm] C# /Python / Format 함수 (0) | 2020.06.05 |
[Algorithm] 빠른 A+B 구하기 (C#) - String, Stringbuilder (0) | 2020.05.23 |
[Algorithm] Algorithm 공부방법 (0) | 2020.05.22 |