https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=2&contestProbId=AV5PrmyKAWEDFAUq&categoryId=AV5PrmyKAWEDFAUq&categoryType=CODE&problemTitle=&orderBy=PASS_RATE&selectCodeLang=ALL&select-1=2&pageSize=10&pageIndex=1

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

 

 

# 문제 정리

주어진 n 길이의 숫자열을 오름차순으로 정렬하여 출력

n은 5이상 50이하이다

가장 첫 줄에는 테스트케이스의 개수 t가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.

각 테스트 케이스의 첫 번째 줄에 n이 주어지고, 그 다음 줄에 n개의 숫자가 주어진다.

출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다. 

 

 

 

 


# 문제 해결을 위한 개념

 

< arr >

배열 array

 

 

< sorted >

list.sort() 와 sorted(list)의 차이점

list.sort()는 본체의 리스트를 정렬해서 변환하는 것이다

sorted(list)는 본체 리스트는 내버려두고, 정렬한 새로운 리스트를 반환하는 것이다.

 

 

< 포맷팅 방법 >

 

1. % 포맷팅

% + '자료형 종류' % 값

변수 타입에 따라서 %s, %d, %f 구분해서 써줘야 한다. 

주의해야할 점은 명시형 자료형마다 입력값으로 사용할 수 있는 자료형이 정해져있다는 점이다.

정수 %d
실수 %f
문자열 %s
8진수 %o
16진수 %x
% %%

 

person1 = "철수"
person2 = "영희"
print( "%s는 %s를 좋아한데요!"% (person1, person2))

 

 

2. format 함수

{}를 이용한 포맷팅

변수 타입 관계 없이 {}해주면 된다. 

person1 = "철수"
person2 = "영희"
print( "{}는 {}를 좋아한데요!".format(person1, person2))

{}로 위치만 잡아주고, 각각의 {}에 어떤 값이 들어갈지는 맨 뒤에 순서대로 적어준다.

 

 

3. f-string 포맷팅

직관적으로 알 수 있다

person1 = "철수"
person2 = "영희"
print( f"{person1}는 {person2}를 좋아한데요!")

문자열 가장 앞에 f를 붙여주고 시작한다.

바로바로 {}를 쓰고 그 안에 어떤 값을 이 자리에 표현할지 적어준다.

포맷팅하는 값이 많아져도 햇갈리지 않고 작성할 수 있다는 장점이 있다. 

 

 

< join 함수 >

함수의 모양은 다음과 같다.

1.  .join(list)

매개변수로 들어온 ['a', 'b', 'c'] 이런 식의 리스트를 'abc'의 문자열로 합쳐서 반환해주는 함수

 

2.  '구분자'.join(list)

리스트의 값과 값 사이에 '구분자'를 넣어서 하나의 문자열로 합쳐준다

예를 들어  '_'.join(  ['a', 'b', 'c'] ) 라 하면 'a_b_c'와 같은 형태로 문자열을 만들어서 반환해준다.

 

 

< str >

str(문자열)

내장 함수 str()은 정수나 실수를 문자열 형태로 바꿔주는 함수 

 

 

 

# 정답 코드

t = int(input())
for test_case in range (1, t+1):
    n = int(input())
    arr = sorted(list(map(int, input().split())))
    print(f"#{test_case} {' ' .join(map(str, arr))}")

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&contestProbId=AV2gbY0qAAQBBAS0&categoryId=AV2gbY0qAAQBBAS0&categoryType=CODE&problemTitle=&orderBy=PASS_RATE&selectCodeLang=ALL&select-1=1&pageSize=10&pageIndex=2

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

# 문제 정리

주어진 숫자부터 0까지 순서대로 찍기

입력된 숫자가 N일 때 거꾸로 출력

 

 


# 문제 해결을 위한 개념

 

range(number, -1, -1)을 사용하면 초기값을 포함하여 -1씩 프린트

 

s [ a : b ] a 부터 b-1 까지
s [ a : b : c ] a 부터 b-1 까지
s [ 0 :  : 1 ] s 문자열 전체
s [ : ] s문자열 전체
s [ -1 :  : -1 ] s문자열 거꾸로 전체
s [ : end ] 0(처음) 부터 end-1 까지
s [ start : ] 0(처음) 부터 end 까지
s { start : len ] [ start : 아주 큰 값 ]

 

 


# 정답 코드

n=int(input())
for i in range(n, -1, -1):
    print(i, end=" ")

https://swexpertacademy.com/main/code/problem/problemDetail.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

 

# 문제 정리

서랍의 비밀번호가 생각이 나지 않는다.

비밀번호 P는 000부터 999까지 번호 중의 하나이다.

주어지는 번호 K부터 1씩 증가하며 비밀번호를 확인해 볼 생각이다.

예를들어 비밀번호 P가 123이고 주어지는 번호 K가 100일 때, 100부터 123까지 24번 확인하여 비밀번호를 맞출 수 있다

P와 K가 주어진다면 K부터 시작하여 몇 번 만에 P를 맞출 수 있는지 알아보자

입력으로 P와 K가 빈 킨을 사이로 주어진다.

 

 

 


# 문제 해결을 위한 개념

< break >

break문은 루프에서 바로 빠져나올 때 사용된다.

루프 조건이 아직 거짓이 아니더라도 루프를 빠져나와 다음 코드를 실행한다.

 

예를들어, 1부터 10까지의 숫자를 반복하다가 5를 만나면 루프를 빠져나오는 경우 다음과 같이 작성할 수 있다.

for i in range(1,11):
    if i == 5:
        break
    print(i)
1
2
3
4

 

 

 


# 정답 코드

p,k = map(int,input().split())
print(p -k +1)
p,k = map(int,input().split())
count = 0
for i in range(k, p+1):
    count += 1
    if i == p:
        print(count)
        break

 

123 100
24

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&contestProbId=AV5PhcWaAKIDFAUq&categoryId=AV5PhcWaAKIDFAUq&categoryType=CODE&problemTitle=&orderBy=PASS_RATE&selectCodeLang=ALL&select-1=1&pageSize=10&pageIndex=2

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

# 문제 정리

입력으로 1개의 정수 N이 주어진다

정수N의 약수를 오름차순으로 출력하는 프로그램을 작성하라

N은 1개 이상 1000개 이하의 정수이다.

 

 

 


# 문제 해결을 위한 개념

약수의 기본 조건

1. 나누었을 떄 나머지 값이 == 0 이 되는 것을 조건문 안에 넣어야 한다.

2. 조건을 만족하지 않으면 출력하지 않는다

3. 약수는 최대 자기 자신밖에 안되므로, 반복문에서 자기 자신 값 이하로 조건을 잡는다.

 

 


# 정답 코드

n = int(input())
for i in range(n):
    if n % (i+1) == 0:
        print(i+1, end=" ")

 

 

 

 

정수 N의 약수를 내림차순으로 출력하는 경우의 코드는 다음과 같다.

n = int(input())
for i in range(n, 0, -1):  # n부터 1까지 역순으로 반복
    if n % i == 0:
        print(i, end=" ")

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5QLGxKAzQDFAUq

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

# 문제 정리

알파벳으로 이루어진 문자열을 입력받아 각 알파벳을 1부터 26까지의 숫자로 변환하여 출력

문자열의 최대 길이는 200

각 알파벳을 숫자로 변환한 결과값을 빈 칸을 두고 출력한다

 

 


# 문제 해결을 위한 개념

< ord >

1. ord() : 문자를 아스키코드로 변환

2. chr() : 아스키코드를 문자로 변환

 

 < 64를 빼는 이유 >

A가 1이 되려면 다음과 같은 식을 세우면 된다.

65 (A의 아스키코드) - 64(A가 1이 되기 위해 빼야 하는 수)

A = 65

B = 66

...

Z = 70

 

 

 

# 정답 코드

alpha = input()
for i in alpha:
    print(ord(i)-64, end=" ")
ABCDEFGHIJKLMNOPQRSTUVWXYZ
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

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&contestProbId=AV5QDEX6AqwDFAUq&categoryId=AV5QDEX6AqwDFAUq&categoryType=CODE&problemTitle=&orderBy=PASS_RATE&selectCodeLang=ALL&select-1=1&pageSize=10&pageIndex=2

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

 

# 문제 정리

1부터 주어진 횟수까지 2를 곲한 값을 출력

주어질 숫자는 30을 넘지 않는다

 

 


# 문제 해결을 위한 개념

 

< end =" " >

end = ""를 넣게 되면 바로옆에 붙여서 출력.

pritnt()함수가 출력된 후 추가할 문자를 지정

기본값은 개행문자(\n)로, 출력이 끝난 뒤 자동으로 줄바꿈이 이루어진다.

이 값을 수정하면 개행 대신 원하는 문자나 공백을 넣을 수 있다.

 

 

 


# 정답 코드

t=int(input())
for i in range(t):
    print((2**i), end=" ")
8
1 2 4 8 16 32 64 128

 

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&contestProbId=AV5QPsXKA2UDFAUq&categoryId=AV5QPsXKA2UDFAUq&categoryType=CODE&problemTitle=&orderBy=PASS_RATE&selectCodeLang=ALL&select-1=1&pageSize=10&pageIndex=2

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

 

# 문제 정리

중간값은 통계 집단의 수피를 크기 순으로 배열했을 때 전체의 중앙에 위치하는 수치를 뜻한다.

입력으로 N개의 점수가 주어졌을 때 중간값을 출력하기

 

 


# 문제 해결을 위한 개념

1.  .sort() 

기본적으로 제공되는 내장함수 중 하나이며 괄호 안에 오른차순, 내림차순으로 정렬할 수 있다.

매개변수(괄호)안에 값을 넣지 않으면 기본적으로 reverse=False 오름차순 정렬이다.

기존 데이터를 변경하는 방식으로 반환한다.

list = ["d", "c", "a", "b"]
list.sort()
print(list)  # 오름차순

list.sort(reverse=True)
print(list)  # 내림차순
['a', 'b', 'c', 'd']
['d', 'c', 'b', 'a']

 

 

2. list에 저장된 값을 가져오려면 a.[index] 식으로 적으면 된다. [ ]안에는 수식이 들어가도 된다.

 

 


# 정답 코드

N = int(input())
nums = list(map(int, input().split()))
nums.sort()
print(nums[N//2])

 

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&contestProbId=AV5QRnJqA5cDFAUq&categoryId=AV5QRnJqA5cDFAUq&categoryType=CODE&problemTitle=&orderBy=PASS_RATE&selectCodeLang=ALL&select-1=1&pageSize=10&pageIndex=2

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

 

# 문제 정리

10개의 수를 입력받아, 평균값을 출력하는 프로그램을 작성 

소수점 첫째자리에서 반올림한 정수를 출력

각 수는 0 이상 10000이하의 정수

가장 첫 줄에는 테스트 케이스의 개수 T가 주어지고, 그 아래로 각 테스트 케이스가 주어진다.

각 테스트 케이스의 첫 번째 줄에는 10개의 수가 주어진다.

출력의 각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다.

 

 


# 문제 해결을 위한 개념

< 한 줄로 정수를 각각 입력하여 띄어쓰기를 기준으로 배열로 만들어주는 문법 >

num = list(map(int, input().split()))

 

 

< round () 함수 >

주어진 숫자를 지정한 소수점 자릿수에 맞춰 반올림하는 역할

n = round(3.142592, 2)
print(n)
3.14

 

 

< 산술 평균의 계산 >

avg()함수를 제외하고 모두 내장함수이다.

sum() 총합을 구함. 리스트의 값을 모두 더한다
min() 최소값을 구함. 리스트의 값 중에서 제일 작은 것을 리턴한다
max() 최대값을 구함. 리스트의 값 중에서 제일 큰 것을 리턴한다
avg() 평균값을 구함. (avg는 내장함수가 아니다)
len() 리스트의 갯수를 리턴한다.

 

list = [1, 2, 3, 4, 5]

print(sum(list))
print(max(list))
print(min(list))
print(len(list))

avg = sum(list) / len(list)
print(avg)
15
5
1
5
3.0

 

 

 

# 정답 코드

t = int(input())
for test_case in range(1, t+1):
    n = list(map(int, input().split()))
    result = round(sum(n) / len(n))
    print("#%d %d" % (test_case, result))

https://swexpertacademy.com/main/code/problem/problemDetail.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

 

# 문제 정리

2개의 수를 입력 받아 크기를 비교하여 등호 또는 부등호를 출력하는 프로그램 작성

각 수는 0이상 10000이하의 정수

가장 첫 줄에는 테스트 케이스의 개수 t가 주어지고, 그 아래로 각 테스트 케이스가 주어진다

각 테스트 케이스의 첫 번째 줄에는 2개의 수가 주어진다

출력의 각 줄은 #t 로 시작하고, 공백을 한 칸 둔 다음 정답을 출력한다

 

 


# 문제 해결을 위한 개념

< 서식 문자의 사용 >

코드 설명
%d 정수(10진수)
%f 실수(부동소수점)
%c 문자
%s 문자열
%O 8진수
%X 16진수
%% 문자 %

 

 


# 정답 코드

t = int(input())
for test_case in range (1, t+1):
    a, b = map(int, input().split())
    if a > b :
        x = ">"
    elif a == b:
        x = "="
    else:
        x = "<"
    print("#%d %s" % (test_case, x))

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&contestProbId=AV5QFuZ6As0DFAUq&categoryId=AV5QFuZ6As0DFAUq&categoryType=CODE&problemTitle=&orderBy=PASS_RATE&selectCodeLang=ALL&select-1=1&pageSize=10&pageIndex=1

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

# 문제 정리

주어진 텍스트를 그대로 출력

#++++
+#+++
++#++
+++#+
++++#

 

 

 


# 문제 해결을 위한 개념

 

1. 행에대한 for문과 열에 대한 for문

예를 들어 i = 1이고 j = 1이면 1행1열에 문자를 작성

 

 

2. end=""

print 특성 상 다음 줄로 넘어기기 때문에 (자동 개행) end=""를 사용해주는 것이 좋다.

for i in range(2):
    for j in range(2):
        print("+")
+
+
+
+

 

for i in range(2):
    for j in range(2):
        print("+", end="")
++++

 

 

3. print()

i에 들어가 있는 for문 안에서 개행을 해줄 필요가 있을 때, print()만 작성해주면 된다.

이때, print()의 위치를 잘 지정해주어야 한다.

 

 

 


# 정답 코드

print("#++++")
print("+#+++")
print("++#++")
print("+++#+")
print("++++#")

 

print(""""#++++
+#+++
++#++
+++#+
++++#""")

 

for i in range(5):
    for j in range(5):
        if i == j:
            print("#", end="")
        else:
            print("+", end="")
    print()

 

+ Recent posts