1차원 배열
https://www.acmicpc.net/step/6
10807 개수 세기
import sys; input = sys.stdin.readline
N = int(input())
lis = list(map(int, input().split()))
v = int(input())
print(lis.count(v))
#count = 0
#for num in lis: for문과 count()비교하면 count()가 우수.
# if num == v: 실패율문제는 for안에 count()들어가서 문제된 것!
# count += 1
#print(count)
10871 X보다 작은 수
import sys; input = sys.stdin.readline
N, X = map(int, input().split())
A = list(map(int, input().split()))
print(' '.join(str(num) for num in A if num < X))
# 기본이 문자열인 input()과 str만 가능한 join개념을 기억하자.
10818 최소, 최대
import sys; input = sys.stdin.readline
N = int(input())
lis = list(map(int, input().split()))
print(min(lis), max(lis))
# 정렬해서 양끝을 출력할수도 있지만 여기선 max, min이 O(N)으로 더 효율적
# 정렬을 쓰는 순간 O(N log N)
2562 최댓값
import sys; input = sys.stdin.readline
lis = [int(input()) for _ in range(9)]
# 1개값 여러줄에 걸쳐 input 받는 법을 배운 문제
print(max(lis))
print(lis.index(max(lis)) + 1)
10810 공 넣기
import sys; input = sys.stdin.readline
N, M = map(int, input().split())
lis = [list(map(int, input().split())) for _ in range(M)]
# 내용을 2차원 배열로 받은다음
basket = [0] * (N+1) # 바구니 리스트 생성. 인덱스 0은 버리는 개념
for ball in lis: # lis의 한개의 list = ball
for loc in range(ball[0], ball[1]+1):
basket[loc] = ball[2] # i부터 j까지 인덱스 위치 값을 ball[2]로 갱신
print(' '.join(str(basket[b]) for b in range(1, len(basket))))
# 띄어쓰기 문자열 공백으로 출력
10813 공 바꾸기
import sys; input = sys.stdin.readline
N, M = map(int, input().split())
lis = [list(map(int, input().split())) for _ in range(M)]
basket = [a for a in range(0, N+1)]
# 인덱스 활용을 위해 0번부터 각 번호 삽입한 리스트 생성
for ball in lis: # 각 공을 서로 위치 바꾸기(파이썬 형태의 개념!)
basket[ball[0]], basket[ball[1]] = basket[ball[1]], basket[ball[0]]
print(' '.join(str(basket[ball]) for ball in range(1, len(basket))))
5597 과제 안 내신 분..?
import sys; input = sys.stdin.readline
lis = [int(input()) for _ in range(28)]
total_lis = [num for num in range(1,31)]
for num in lis:
total_lis.remove(num)
print(total_lis[0])
print(total_lis[1])
# N^2 시간복잡도이지만 길이 28고정이므로 O(N)
3052 나머지
import sys; input= sys.stdin.readline
lis = []
for num in range(10):
lis.append(int(input()) % 42)
# input을 여기에 삽입해서 코드 효율성(?)을 증진한 케이스
print(len(set(lis))) # set으로 중복지우고 len 바로 측정
10811 바구니 뒤집기
import sys; input = sys.stdin.readline
N, M = map(int, input().split())
lis = [list(map(int, input().split())) for _ in range(M)]
basket = [a for a in range(0, N+1)]
# 인덱스 활용을 위해 0번부터 각 번호 삽입한 리스트 생성
for ball in lis: # reversed함수로 뒤집은 후, 해당 내용 반영
# reversed함수에 대해 유념하자
basket[ball[0] : ball[1] + 1] = reversed(basket[ball[0] : ball[1] + 1])
print(' '.join(map(str, basket[1:])))
# 0번 인덱스 제외하는 효율적인 join 출력
1546 평균
import sys; input = sys.stdin.readline
N = int(input())
lis = list(map(int, input().split()))
print(sum(lis) / max(lis) * 100/N)
# 왜 브론지 1인지 모르겠는 문제
2차원 배열
https://www.acmicpc.net/step/2
2738 행렬 덧셈
import sys; input = sys.stdin.readline
N, M = map(int, input().split())
mtxA = [list(map(int, input().split())) for _ in range(N)]
mtxB = [list(map(int, input().split())) for _ in range(N)]
# 생성될 새로운 행렬
matrix = [[0]*M for _ in range(N)]
# 행렬 더하기
for i in range(N):
for j in range(M):
matrix[i][j] = mtxA[i][j] + mtxB[i][j]
# 여러 줄에 걸쳐서 출력하기
for k in matrix:
print(' '.join(map(str, k)))
2566 최댓값
import sys; input = sys.stdin.readline
mtx = [list(map(int, input().split())) for _ in range(9)]
#비교 대상 리스트
compare = []
for i in range(9):
for j in range(9):
compare.append(mtx[i][j])
print(maximum:= max(compare))
#divmod(A, B) 의미: A / B의 (몫, 나머지) tuple로 출력
# 행, 열 반환을 원하면 divmod(max_index, num_cols) 사용
row, col = divmod(compare.index(maximum), 9)
#몫 = row, 나머지 = col -> 인덱스 +1 반영
print(row+1, col+1)
10798 세로 읽기
import sys; input = sys.stdin.readline
# 비어있는 최대 문자열 통 5x15
mtx = [[] for _ in range(5)]
answer = ''
for i in range(5): # input값을 줄별로 list 정의(line)
line = list(map(str, input().strip()))
mtx[i] = line + [''] * (15 - len(line))
#그리고 채워지지않은 나머지를 ''로 채움
for j in range(15): #이걸 밖에둬야 i가 먼저 순회된다.
for i in range(5):
if mtx[i][j] != '':
answer += mtx[i][j]
else:
continue
print(answer)
2563 색종이
import sys; input= sys.stdin.readline
# 0 으로 이뤄진 100 사이즈의 전체 종이
paper = [[0]*100 for _ in range(100)]
# 입력부분
p_num = int(input())
black_paper = [list(map(int, input().split())) for _ in range(p_num)]
for i in range(10): # 행 (범위는 1, 11하거나 이렇게 10만 하거나)
for j in range(10): # 열
for k in range(p_num): # 검은종이 순회
if paper[black_paper[k][0] + i][black_paper[k][1] + j] == 1:
continue # 1이면 연산 패스
else: # 나머지는 1 할당
paper[black_paper[k][0] + i][black_paper[k][1] + j] = 1
print(sum(sum(row) for row in paper)) # 2차원 배열의 전체 합
# idea: 전체를 0의 배열로 보고 1을 집어넣는 방식으로 구현한 문제이다.
728x90
반응형
'TechStudy > CodingTest' 카테고리의 다른 글
chp8 해시(hash) (1) | 2023.12.13 |
---|---|
chp6 스택(Stack), chp7 큐(Queue) (4) | 2023.12.07 |
chp5 배열(Array) (1) | 2023.11.28 |
코테 준비 및 시간 복잡도, 빈출 문법 (2) | 2023.11.18 |
코딩테스트 공부 1 (0) | 2023.10.19 |