알고리즘 196

[알고리즘] 백준 5430 파이썬 - AC

5430번: AC 각 테스트 케이스에 대해서, 입력으로 주어진 정수 배열에 함수를 수행한 결과를 출력한다. 만약, 에러가 발생한 경우에는 error를 출력한다. www.acmicpc.net 문제 선영이는 주말에 할 일이 없어서 새로운 언어 AC를 만들었다. AC는 정수 배열에 연산을 하기 위해 만든 언어이다. 이 언어에는 두 가지 함수 R(뒤집기)과 D(버리기)가 있다. 함수 R은 배열에 있는 수의 순서를 뒤집는 함수이고, D는 첫 번째 수를 버리는 함수이다. 배열이 비어있는데 D를 사용한 경우에는 에러가 발생한다. 함수는 조합해서 한 번에 사용할 수 있다. 예를 들어, "AB"는 A를 수행한 다음에 바로 이어서 B를 수행하는 함수이다. 예를 들어, "RDD"는 배열을 뒤집은 다음 처음 두 수를 버리는 ..

[알고리즘] 백준 1158 파이썬 - 요세푸스 문제

1158번: 요세푸스 문제 첫째 줄에 N과 K가 빈 칸을 사이에 두고 순서대로 주어진다. (1 ≤ K ≤ N ≤ 5,000) www.acmicpc.net 문제 요세푸스 문제는 다음과 같다. 1번부터 N번까지 N명의 사람이 원을 이루면서 앉아있고, 양의 정수 K(≤ N)가 주어진다. 이제 순서대로 K번째 사람을 제거한다. 한 사람이 제거되면 남은 사람들로 이루어진 원을 따라 이 과정을 계속해 나간다. 이 과정은 N명의 사람이 모두 제거될 때까지 계속된다. 원에서 사람들이 제거되는 순서를 (N, K)-요세푸스 순열이라고 한다. 예를 들어 (7, 3)-요세푸스 순열은 이다. N과 K가 주어지면 (N, K)-요세푸스 순열을 구하는 프로그램을 작성하시오. 문제풀이 n,k = map(int,input().split..

[알고리즘] 백준 10867 파이썬 - 중복 빼고 정렬하기

10867번: 중복 빼고 정렬하기 첫째 줄에 수의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째에는 숫자가 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. www.acmicpc.net 문제 N개의 정수가 주어진다. 이때, N개의 정수를 오름차순으로 정렬하는 프로그램을 작성하시오. 같은 정수는 한 번만 출력한다. 문제풀이 int(input()) List = list(map(int,input().split())) a=[] for i in List: if(i not in a): a.append(i) a.sort() print(*a) - 입력받은 값이 a 리스트에 있지 않으면 추가한다. - a 리스트를 오름차순으로 정렬한다. - a 리스트를 한 줄에 출력한다.

[알고리즘] 백준 1181 파이썬 - 단어 정렬

1181번: 단어 정렬 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. www.acmicpc.net 문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 문제풀이 import sys input = sys.stdin.readline A=[] for _ in range(int(input())): a = input().rstrip() if a not in A: A.append(a) A.sort() A.sort(key=len) for i in A: pri..

[알고리즘] 백준 10815 파이썬 - 숫자 카드

10815번: 숫자 카드 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10, www.acmicpc.net 문제 숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 가지고 있는지 아닌지를 구하는 프로그램을 작성하시오. 문제풀이 import sys input = sys.stdin.readline N=int(input()) List=list(map(int,input().split())) #이분 탐색을 위해 정렬 List.sort() M=in..

[IT지식] 자료구조와 알고리즘 공부를 해야하는 이유?

1. 자료구조와 알고리즘? - 자료 구조는 데이터의 효율적인 접근과 수정을 위해 데이터를 표현하는 방식으로, 알고리즘의 유용한 재료가 된다. 알고리즘은 어떠한 일을 처리하기 위해 정해진 절차나 방식을 표현한 것이다. 2. 자료구조의 종류 - 자료 구조는 '선형'과 '비선형'으로 구분된다. 선형 자료 구조에는 '리스트', '스택', '큐' 등이 있고, 비선형 자료 구조에는 '트리'와 '그래프' 등이 있다. 자료 구조를 제대로 이해해 적재적소에 적용하면 데이터를 효율적으로 송수신할 수 있고, 편리하게 관리할 수 있다. 많은 알고리즘 중에 자주 공부하는 알고리즘은 '정렬', '탐색'이다. 이 알고리즘은 데이터를 순서에 맞게 정렬하거나 찾는 것이다. 정렬 알고리즘에는 '버블 정렬', '병합 정렬', '퀵 정렬'..

IT지식/나머지 2022.10.24

인공지능 머신러닝과 알고리즘 (Feat. 퍼셉트론 알고리즘, 활성화 함수)

1. 머신러닝이란? - 컴퓨터 시스템이 사용하는 알고리즘과 통계적 모델에 대한 과학적인 연구다. 컴퓨터는 명시적인 지시 사항들을 이용하는 대신에 모델과 추론에 의존하여 효과적으로 작업을 수행한다. 머신러닝은 인공지능의 하위 집합으로 간주된다. 즉 컴퓨터 프로그램이 수행하는 작업 T가 경험 E를 통해서 성능 P만큼 향상된 것으로 측정될 때, 우리는 컴퓨터 프로그램이 학습한다고 말한다. 2. 퍼셉트론 알고리즘 - 신경망 알고리즘의 기초이다. 퍼셉트론은 신경 세포를 인공적으로 모델링한 것으로, 신경 세포처럼 다른 신경 세포로부터 정보를 받아서 새로운 정보를 생성한 후, 또 다른 신경 세포로 전달한다. x1과 x2는 입력 신호, y는 출력 신호, w1, w2는 가중치를 나타낸다. 가중치는 결합 하중이라고도 하며..

[알고리즘] 백준 10820 파이썬 - 문자열 분석

10820번: 문자열 분석 문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있 www.acmicpc.net 문제 문자열 N개가 주어진다. 이때, 문자열에 포함되어 있는 소문자, 대문자, 숫자, 공백의 개수를 구하는 프로그램을 작성하시오. 각 문자열은 알파벳 소문자, 대문자, 숫자, 공백으로만 이루어져 있다. 문제풀이 while True: try: a=0 b=0 c=0 d=0 X=input() for i in X: if(i.islower()): a+=1 elif(i.isupper()): b+=1 elif(i.isdigit()): c+=1 elif(i.isspace()..

[알고리즘] 백준 9093 파이썬 - 단어 뒤집기

9093번: 단어 뒤집기 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있으며, 문장이 하나 주어진다. 단어의 길이는 최대 20, 문장의 길이는 최대 1000이다. 단어와 단어 사이에는 www.acmicpc.net 문제 문장이 주어졌을 때, 단어를 모두 뒤집어서 출력하는 프로그램을 작성하시오. 단, 단어의 순서는 바꿀 수 없다. 단어는 영어 알파벳으로만 이루어져 있다. 문제풀이 #1번 답안 import sys N = int(sys.stdin.readline()) for i in range(N): List = list(map(str,sys.stdin.readline().split())) List2=[] for j in List: a="" for k in j: a= k..

[알고리즘] 백준 4375 파이썬 - 1

4375번: 1 2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오. www.acmicpc.net 문제 2와 5로 나누어 떨어지지 않는 정수 n(1 ≤ n ≤ 10000)가 주어졌을 때, 1로만 이루어진 n의 배수를 찾는 프로그램을 작성하시오. 문제풀이 while True: try: n = int(input()) except: break x="1" while True: X = int(x) if(X%n==0): print(len(x)) break else: x +="1" - 입력횟수가 정해지지 않았기에 while문을 사용하여 값이 멈출 때까지 입력 받는다. 이후 1로만 이루어진 값을 입력받은 값으로 나누었을 때 나누어 ..