<문제>


<코드>

 

# 첫째줄 테스트 케이스 입력
test_case = int(input())

# 케이스마다 한 줄씩 평균을 넘는 학생들의 비율의 리스트
case_student_list = list()

# 둘째 줄부터 각 테스트 케이스마다 학생의 수, 이어서 N명의 점수들
for i in range(test_case):
    total = int(0)
    per = int(0)
    data = list(map(int,input().split()))

    # 총합 구하기
    for j in range(1,len(data)): # len(리스트명) -> 리스트 길이
        total = total + data[j]

    # 점수들의 대한 평균
    avr = total / data[0]

    # 평균이 넘는 학생들의 비율 구하기
    for m in range(1,len(data)):
        if avr<data[m]:
            per = per + 1

    ratio = (per / data[0]) * 100

    # 각 케이스마다의 비율 저장
    case_student_list.append(ratio)

# 각 케이스마다 평균을 넘는 학생들의 비율 출력
for i in range(0,len(case_student_list)):
    print(str('%.3f'%(round(case_student_list[i],3)))+'%')

    # 3째 자릿수에서 반올림 rount(숫자,반올림자릿수)
    # %.3f %(숫자) 하면 소수점 3자리까지 표기

가독성있게 코드 짤것!

'알고리즘 문제 풀이' 카테고리의 다른 글

[백준 알고리즘] C# 시험 점수 5596번  (0) 2021.07.23
[백준 알고리즘] C# 운동 1173번  (0) 2021.07.22
[3052번] 나머지  (0) 2020.01.07
[2920번] 음계  (0) 2020.01.06
[1427번] : 소트인사이드  (0) 2019.10.11

data = list()
total = int(0)

# 값을 입력 받은 후에, 42로 값들을 나눈다
for i in range(10):
    data.append(int(input()))
    data[i] = data[i] % 42

# 리스트의 값들 중에 42로 나눴을 때 나머지 값이 동일한게 있다면 -1로 바꾼다
for i in range(0,10):
    for j in range(i+1,10):
        if data[i] == -1:break
        if data[i] == data[j]:data[j] = -1

    if data[i] != -1:
        data[i] = -1
        total = total + 1

print(total)

- 생각 하는 것을 표현 하는것이 중요!!

- 간결하고, 최대한 주석 많이 달기

- 알고리즘 문제 꾸준히 풀고 못푼 거 있으면 계속 반복해서 풀 것

'알고리즘 문제 풀이' 카테고리의 다른 글

[백준 알고리즘] C# 운동 1173번  (0) 2021.07.22
[4344번] 평균은 넘겠지  (0) 2020.01.10
[2920번] 음계  (0) 2020.01.06
[1427번] : 소트인사이드  (0) 2019.10.11
[2750번] 수 정렬하기  (0) 2019.10.09

 

 

 

# 숫자를 담을 리스트 생성
data = list(map(int,input().split()))

ascengding = [1,2,3,4,5,6,7,8]
descending = [8,7,6,5,4,3,2,1]

# data 리스트와 ascengding 리스트가 같으면 ascengding 출력

if data == ascengding:
    print('ascending')
    
# data 리스트와 descending 리스트가 같으면 descending 출력

elif data == descending:
    print('descending')
    
# 만약 data 리스트에 있는게 ascengding, descending 둘다 아니면 mixed 출력
else:
    print('mixed')

java를 이용하다가 python을 최근에 접해서 입력받는 방법을 잘몰랐는데 구글링 검색하면서 알게되었다.

 

-> data = list(map(int,input().split()))

 

  • 일반적으로 값을 input으로 입력받을 때 파이썬은 기본적으로 문자열로 입력
  • int로 변환 시켜주기 위해서는 map함수를 이용하면 좋음
  • split을 사용하여 공백 기준으로 여러개의 값들을 입력받음
  • list의 append값을 추가 할 때 사용하는 함수

'알고리즘 문제 풀이' 카테고리의 다른 글

[백준 알고리즘] C# 운동 1173번  (0) 2021.07.22
[4344번] 평균은 넘겠지  (0) 2020.01.10
[3052번] 나머지  (0) 2020.01.07
[1427번] : 소트인사이드  (0) 2019.10.11
[2750번] 수 정렬하기  (0) 2019.10.09

이 문제는 삽입 정렬을 이용하여 풀었다.  

import java.util.Scanner;

public class SortInside {

	public static void swap(char a[], int index1, int index2) { 
		char temp = a[index1];
		a[index1] = a[index2];
		a[index2] = temp;
	}

	public static void Descending(String a) { // 내림차순으로 변환

		char Change[] = a.toCharArray(); // 문자열 a를 char형으로 한글자씩 넣을떄 사용 하는 api

		int len = Change.length;

		for (int i = 0; i < len - 1; i++) {
			for (int j = i + 1; j < len; j++) {
				if (Change[i] <= Change[j]) {
					swap(Change, i, j);
				}
			}
		}

		for (int i = 0; i < len; i++) { // 출력하기
			System.out.print(Change[i] + "");
		}

	}

	public static void main(String[] args) {

		Scanner scan = new Scanner(System.in);

		String data = scan.nextLine();

		Descending(data);

	}

}

 

아직 메소드 사용이 익숙하지가않아 조금 이상하긴 한데, 계속 해서 메소드를 사용하여 푸는 습관을 들이자

 

'알고리즘 문제 풀이' 카테고리의 다른 글

[백준 알고리즘] C# 운동 1173번  (0) 2021.07.22
[4344번] 평균은 넘겠지  (0) 2020.01.10
[3052번] 나머지  (0) 2020.01.07
[2920번] 음계  (0) 2020.01.06
[2750번] 수 정렬하기  (0) 2019.10.09

이 문제는 정렬하기인데, 시간복잡도 O(n^2)이므로 삽입정렬 or 버블정렬로 문제를 해결하면 좋다.

 

package 주말스터디;

import java.util.Scanner;

public class 수정렬하기 {

	public static void swap(int x[], int index1, int index2) {

		if (x[index1] > x[index2]) { // 위치 바꿔주기
			int temp = x[index1];
			x[index1] = x[index2];
			x[index2] = temp;
		}

	}

	public static void bubbleSort(int x[], int n) { // 정렬하기

		for (int i = 0; i < n - 1; i++) {
			for (int j = 0; j < n - i - 1; j++) {
				swap(x, j, j + 1);
			}
		}

		print(x, n);

	}

	public static void print(int x[], int n) { // 출력하기

		for (int i = 0; i < n; i++) {
			System.out.println(x[i]);
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Scanner scan = new Scanner(System.in);

		int n = scan.nextInt(); // 첫번째 줄 몇개 입력받을지
		
		int data[] = new int[n]; 
		
		for (int i = 0; i < n; i++)
			data[i] = scan.nextInt();

		수정렬하기.bubbleSort(data, n);
	}

}

 

아직  메소드 사용이 익숙하지가 않은데, 계속 메소드를 활용하며 풀어봐야겠다.

 

'알고리즘 문제 풀이' 카테고리의 다른 글

[백준 알고리즘] C# 운동 1173번  (0) 2021.07.22
[4344번] 평균은 넘겠지  (0) 2020.01.10
[3052번] 나머지  (0) 2020.01.07
[2920번] 음계  (0) 2020.01.06
[1427번] : 소트인사이드  (0) 2019.10.11

+ Recent posts