https://www.acmicpc.net/problem/8393

 

 

 

 

# 문제 정리

 

 


# 문제 해결을 위한 개념

 

 


# 정답 코드

n = int(input())
total = 0
for i in range(1, n+1):
    total += i
print(total)

 

https://www.acmicpc.net/problem/2525

 

 

 

 

 

# 문제 정리

 

 


# 문제 해결을 위한 개념

a = 15
b = 6

print('a/b = ', a/b)   # 나눗셈
print('a//b = ', a//b)   # 몫
print('a%b = ', a%b)   # 나머지
a/b =  2.5
a//b =  2
a%b =  3

 

 

 


# 정답 코드

h, m = map(int, input().split())
c = int(input())
h += c // 60
m += c % 60

if(m >= 60):
    m -= 60
    h += 1
if(h >= 24):
    h -= 24

print(h, m)

https://www.acmicpc.net/problem/2884

 

 

 

 

# 문제 정리

h 의 범위는  0 - 23, m 의 범위는  0 - 59 이다.

 

 


# 문제 해결을 위한 개념

 

 

 

# 정답 코드

h, m = map(int, input().split())
if m < 45:
    if h == 0:
        h = 23
        print(h, m+15)
    else:
        print(h-1, m+15)
else:
    print(h,m-45)

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

 

SW Expert Academy

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

swexpertacademy.com

 

 

 

# 문제 정리

'level'과 같이 거꾸로 읽어도 제대로 읽은 것과 같은 문장이나 낱말을 화문이라 한다.

단어를 입력 받아 회문이면 1을 출력하고, 아니라면 0을 출력하는 프로그램 작성하기

각 단어의 길이는 3 이상 10이하 이다.

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

각 테스트 케이스의 첫 번째 줄에 하나의 단어가 주어진다.

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

 

 

 


# 문제 해결을 위한 개념

 

w[::-1]은 값을 뒤집는다

  

 

위 그림과 같이 1부터 8까지 여덟 개의 숫자를 포함하는 하나의 리스트가 있다고 가정하자.

 

start를 입력하지 않으면 0을 입력한 것과 같다.

stop을 입력하지 않으면 리스트 길이(len(my_list))를 입력한 것과 같다.

step을 입력하지 않으면 1을 입력한 것과 같다.0-

 

 

 

 

 

 

 

 

 


# 정답 코드

t = int(input())
for test_case in range(1, t+1):
    str = input()
    if str == str[::-1]:
        print(f'#{test_case} 1')
    else:
        print(f'#{test_case} 0')

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

 

SW Expert Academy

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

swexpertacademy.com

 

 

 

 

# 문제 정리

1부터 n까지의 숫자에서 홀수는 더하고 짝수는 뺐을 떄 최종 누적된 값을 구하기

예를들어, n이 1일 경우

1-2+3-4+5=3

n은 1이상 10이하의 정수이다.

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

각 테스트 케이스에는 n이 주어진다.

각 줄은 '#t'로 시작하고, 공백을 한 칸 둔 다음 누적된 값을 출력한다.

 

 


# 문제 해결을 위한 개념

 

 

 


# 정답 코드

n = int(input())
for test_case in range(1, n+1):
    n = int(input())
    total = 0
    for i in range(1, n+1):
        if i % 2 == 0:
            total -= i
        else:
            total += i
    print(f'#{test_case} {total}')

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

 

SW Expert Academy

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

swexpertacademy.com

 

 

 

# 문제 정리

 

하나의 자연수를 입력 받아 각 자릿수의 합을 계산하는 프로그램 작성

자연수 n은 1부터 9999까지의 자연수이다. 

각 자릿수의 합을 출력한다.

 

 

 


# 문제 해결을 위한 개념

 

< split() > 

문자열을 특정 구분자(delimiter)를 기준으로 분할하여 리스트로 반환하는 매서드

기본적으로 구분자는 공백(space), 탭(tab), 개행(newline) 등의 공백문자이다.

split() 매서드를 사용하여 문자열을 분활하면 분할된 각 부분이 리스트의 요소로 들어간다.

 

 

1.  문자열.split()

문자열을 일정한 규칙으로 잘라서 리스트로 만들어주는 함수

 

2.  문자열.split('구분자')

 

3.  문자열.split('구분자', 분활횟수)

 

4.  문자열.split(sep='구분자', maxsplit=분활횟수)

 

 

 

 

 

# 정답 코드

n = list(map(int, input()))
print(sum(n))
6789
30

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

 

SW Expert Academy

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

swexpertacademy.com

 

 

 

# 문제 정리

369 게임을 프로그램 제작. 게임 규칙은 다음과 같다.

1. 숫자 1부터 순서대로 차례대로 말하되, '3', '6', '9'가 들어가 있는 수는 말하지 않는다.

 

2. '3', '6', '9'가 들어가 있는 수를 말하지 않는 대신, 박수를 친다. 이 때 박수는 해당 숫자가 들어간 개수만큼 쳐야 한다.

예를 들어 숫자 35의 경우 박수 한번, 숫자 36의 경우 박수를 두번 처야 한다.

 

박수를 치는 부분은 숫자 대신, 박수 횟수에 맞게 '-'를 출력한다.

여기서 주의해야 할 것은 박수 한번 칠 때는 -이며, 박수 두 번 칠 때는 - -가 아닌 --이다.

 

 

 


# 문제 해결을 위한 개념

< count >

문자열 내부에 특정 문자가 등장하는 횟수를 알려준다.

대소문자를 구분하고, 해당 문자열이 없을 경우 0을 반환한다.

예를들어 1,3 이라면 count = 1, 136 일 때, count = 2 이다.

예를들어 str.count('i') 는 str 문자열에 'i' 라는 문자가 등장하는 횟수를 세어준다.

 

1.  문자열.count(a)

문자열 전 범위에서 a가 등장하는 횟수를 반환하는 매서드

 

2. 문자열.count(a, start)

문자열 start index 부분에서부터 시작해서 문자열 끝까지 a가 등장하는 횟수를 반환하는 매서드

 

3. 문자열.count(a, start, end)

문자열 start index 부분에서 end index 부분까지의 부분 문자열에서 a가 등장하는 횟수를 반환하는 매서

 

 

 

 

 

# 정답 코드

N = int(input())
for i in range(1,N+1):
    clap = str(i).count('3') + str(i).count('6') + str(i).count('9')
    if not clap:
        print(i,end=' ')
    else:
        print('-'*clap,end=' ')

 

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

 

SW Expert Academy

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

swexpertacademy.com

 

 

# 문제 정리

패턴에서 반복되는 부분을 마디라고 부른다. 문자열을 입력받아 마디의 길이를 출력하는 프로그램을 작성하라

각 문자열의 길이는 30마디이다. 마디의 최대 길이는 10이다.

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

각 테스트 케이스의 첫 번째 줄에는 길이가 30인 문자열이 주어진다

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

 

 

# 문제 해결을 위한 개념

 

< 집합 데이터 타입 >

list [ ] 순서 있음 종복 허용 mutable
tuple 순서 있음 중복 허용 immutable
set 순서 없음 정복 허용 안함  
dict 순서 없음   key와 value 쌍으로 구성

 

 

< 리스트 슬라이싱 >

[:]   처음부터 끝까지 

s[a:b]   a부터 b-1까지

s[a:b:c]   a부터 b-1까지 c간격  

s[0:  :1]   s문자열 전체

s[:]   s문자열 전체

s{-1:  :-1]   s문자열 거꾸로 전체

s[: end]   0(처음)부터 end-1까지 

s[start :]   0(처음)부터 끝까지

s[start:len]   [start:아주 큰 값] 

 

 

< break >

반복문을 중단하고 싶을 때 사용한다

반복문 하나만 빠져나온다. 다중 반복문의 경우 전부 다 나오는게 아닌 가까운 반복문에서만 나온다. 

for i in range(1,6):
    if i == 3:
        break
    print(i)
1
2

 

 

 

 

 

 

# 정답 코드

t = int(input())
for test_case in range(1, t+1):
    s = input()
    for i in range(1, 10):
        if s[:i] == s[i:2*i]:
            print(f"#{test_case} {i}")
            break

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=" ")

+ Recent posts