[문제] / URL : https://programmers.co.kr/learn/courses/30/lessons/76501

 

코딩테스트 연습 - 음양 더하기

어떤 정수들이 있습니다. 이 정수들의 절댓값을 차례대로 담은 정수 배열 absolutes와 이 정수들의 부호를 차례대로 담은 불리언 배열 signs가 매개변수로 주어집니다. 실제 정수들의 합을 구하여 re

programmers.co.kr

[C# 코드]

using System;

public class Solution {
    public int solution(int[] absolutes, bool[] signs) {
        int answer = 0;
        for(int i=0;i<absolutes.Length;i++)
        {
            if(!signs[i])
            {
                answer-=absolutes[i];
            }
            else
            {
                answer+=absolutes[i];
            }
        }
        return answer;
    }
}

 

[문제] / URL : https://www.acmicpc.net/problem/5596

[C# 코드]

using System;

namespace baek5596
{
    class Program
    {
        static int getTotalScore(int[] nums, int index)
        {
            if (index == nums.Length)
            {
                return 0;
            }

            return nums[index] + getTotalScore(nums, index + 1);

        }

        static void Main(string[] args)
        {
            int[] minGookScores = new int[4];
            int[] jungboScores = new int[4];

            for (int i = 0; i < 2; i++)
            {
                string[] lines = Console.ReadLine().Split();

                if (i == 0)
                {
                    for (int j = 0; j < 4; j++)
                    {
                        minGookScores[j] = int.Parse(lines[j]);
                    }
                }

                else if (i == 1)
                {
                    for (int j = 0; j < 4; j++)
                    {
                        jungboScores[j] = int.Parse(lines[j]);
                    }
                }

            }

            int minGookTotalScore = getTotalScore(minGookScores, 0);
            int jungboTotalScore = getTotalScore(jungboScores, 0);

            if (minGookTotalScore >= jungboTotalScore)
            {
                Console.WriteLine(minGookTotalScore);
            }

            else
            {
                Console.WriteLine(jungboTotalScore);
            }

        }
    }
}

[문제] / URL : https://www.acmicpc.net/problem/1173

 

1173번: 운동

첫째 줄에 다섯 정수 N, m, M, T, R이 주어진다.

www.acmicpc.net

[C# 코드]

 

해당 문제는 재귀 함수를 사용하여 구현하였다.

 

using System;

namespace baek1173
{
    class Program
    {
        static int GetExerciseTimeRecursive(int N, int X, int M, int T, int R, int m, int minTime, int exerciseTime)
        {
            if (M - m < T)
            {
                return -1;
            }

            else if (m > X)
            {
                return GetExerciseTimeRecursive(N, m, M, T, R, m, minTime, exerciseTime);
            }

            else if (exerciseTime == N)
            {
                return X <= M ? minTime : -1;

            }

            else if (X + T <= M)
            {
                return GetExerciseTimeRecursive(N, X + T, M, T, R, m, ++minTime, ++exerciseTime);
            }

            return GetExerciseTimeRecursive(N, X - R, M, T, R, m, ++minTime, exerciseTime);

        }

        static void Main(string[] args)
        {
            string[] line = Console.ReadLine().Split();

            int N = int.Parse(line[0]);
            int m = int.Parse(line[1]);
            int M = int.Parse(line[2]);
            int T = int.Parse(line[3]);
            int R = int.Parse(line[4]);

            int time = GetExerciseTimeRecursive(N, m, M, T, R, m, 0, 0);
            Console.WriteLine(time);
        }
    }
}

 

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

[프로그래머스] C# 음양 더하기  (0) 2021.07.23
[백준 알고리즘] C# 시험 점수 5596번  (0) 2021.07.23
[4344번] 평균은 넘겠지  (0) 2020.01.10
[3052번] 나머지  (0) 2020.01.07
[2920번] 음계  (0) 2020.01.06

<문제>


<코드>

 

# 첫째줄 테스트 케이스 입력
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