본문 바로가기
13. [11단계] 제목: 시간 복잡도 (3~7챕터) 시간 복잡도에 대한 개념은 다음 글을 참고하길 바람)https://codingworld2002.tistory.com/100 12. [11단계] 제목: 시간 복잡도 (1~2챕터)챕터를 풀기 전에, "시간 복잡도"에 대한 공부가 필요하다. 그래서 시간 복잡도가 무엇인지 먼저 이야기하고자 한다.시간 복잡도는 무엇인가?시간 복잡도란 "입력 크기에 대해 어떤 알고리즘이codingworld2002.tistory.com3단계. 오늘도 서준이는 알고리즘의 수행시간 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자.입력의 크기 n이 주어지면 MenOfPassion 알고리즘 수행 시간을 예제 출력과 같은 방식으로 출력해보자.MenOfPassion 알고리즘은 다음과 같다.MenO.. 2024. 8. 23.
12. [11단계] 제목: 시간 복잡도 (1~2챕터) 챕터를 풀기 전에, "시간 복잡도"에 대한 공부가 필요하다. 그래서 시간 복잡도가 무엇인지 먼저 이야기하고자 한다.시간 복잡도는 무엇인가?시간 복잡도란 "입력 크기에 대해 어떤 알고리즘이 실행되는 데 걸리는 시간"을 뜻한다.https://youtu.be/08TB5ZLTPu4?si=R55Fl49-sMovqdlm관련 영상또한 시간 복잡도에서 "빅오 표기법"이라는 것이 존재한다.빅오 표기법이란 입력 범위 n을 기준으로 해서 로직이 몇 번 반복되는지 나타내는 것이다.이런 시간 복잡도가 필요한 이유는 간단하다. 바로 효율적인 코드를 개선하기 위한 척도가 되어주기 때문이다.다음은 시간 복잡도의 속도를 비교한 그래프이다. 그래프의 그림처럼 n의 크기가 커질수록 시간 복잡도는 더욱 커지게 된다. 그래서 우리는 O(n*.. 2024. 8. 22.
11. [10단계] 제목: 기하: 직사각형과 삼각형 (5~8챕터) 5단계. 위치 N 개가 주어질 때에, 임씨에게 돌아갈 대지의 넓이를 계산하는 프로그램을 작성하시오. 단, 옥구슬의 위치는 2 차원 정수 좌표로 주어지고 옥구슬은 같은 위치에 여러 개가 발견될 수도 있으며, x 축의 양의방향을 동쪽, y 축의 양의방향을 북쪽이라고 가정한다.예를 들어 위와 같이 (2, 1), (3, 2), (5, 2), (3, 4) 네 점에서 옥구슬을 발견하였다면, 임씨에게 돌아갈 대지는 (2, 1), (5, 1), (2, 4), (5, 4)를 네 꼭짓점으로 하는 직사각형이며, 넓이는 (5 - 2) × (4 - 1) = 9 가 된다. 첫째 줄에 N 개의 점을 둘러싸는 최소 크기의 직사각형의 넓이를 출력하시오. 답: n = int(input())X, Y = [], []for i in rang.. 2024. 8. 21.
10. [10단계] 제목: 기하: 직사각형과 삼각형 (1~4챕터) 1단계. 정수 A, B 가 주어진다. 세로 길이가 A cm, 가로 길이가 B cm 인 아래와 같은 직사각형의 넓이를 cm2 단위로 구하시오.답: a=int(input())b=int(input())print(a*b)a와 b를 입력받고 이후 곱하면 된다. (직사각형 넓이는 가로 곱하기 세로다.)2단계. 한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.답: x,y,w,h=map(int,input().split())print(min(x,y,w-x,h-y))x와 y와 w와 h를 다 받아준다.이후 x와 y 그리고 구하고자 하는 직사각형의 경제선 .. 2024. 8. 20.
9. [9단계] 제목: 약수, 배수와 소수 단계 1단계. 4 × 3 = 12이다.이 식을 통해 다음과 같은 사실을 알 수 있다.3은 12의 약수이고, 12는 3의 배수이다.4도 12의 약수이고, 12는 4의 배수이다.두 수가 주어졌을 때, 다음 3가지 중 어떤 관계인지 구하는 프로그램을 작성하시오.1. 첫 번째 숫자가 두 번째 숫자의 약수이다.2. 첫 번째 숫자가 두 번째 숫자의 배수이다.3. 첫 번째 숫자가 두 번째 숫자의 약수와 배수 모두 아니다. 입력은 여러 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 10,000이 넘지 않는 두 자연수로 이루어져 있다.마지막 줄에는 0이 2개 주어진다. 두 수가 같은 경우는 없다.테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 nei.. 2024. 8. 17.
8. [8단계] 제목: 일반 수학 1 1단계. B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오.10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다.A: 10, B: 11, ..., F: 15, ..., Y: 34, Z: 35첫째 줄에 N과 B가 주어진다.첫째 줄에 B진법 수 N을 10진법으로 출력한다.답: n,b=input().split() print(int(n,int(b)))n과 b를 문자열로 입력받는다.int(n, int(b))는 문자열 n을 b 진수로 해석하여 10진수로 변환하는 코드다. 예를 들어 '1010 2'를 입력하면 n='1010', b='2'1010을 2진수로 해석하여 10진수로 변환하고 출력하게 된다. (결과: 10) 파이썬.. 2024. 8. 16.
7. [7단계] 제목: 2차원 배열 https://infinitt.tistory.com/106 파이썬 (Python) 2중 리스트, 2차원 배열 선언 및 출력https://infinitt.tistory.com/17 파이썬(Python) 기초 (6) 데이터 타입(Data Type) - 리스트 (list) 와 튜플 (tuple) 그리고 관련 함수(sort reverse insert remove pop append extend 등.. ) 리스트와 튜플은 모두 데이터를 한번에infinitt.tistory.com(2차원 배열 선언 및 관리)1단계. N*M크기의 두 행렬 A와 B가 주어졌을 때, 두 행렬을 더하는 프로그램을 작성하시오.첫째 줄에 행렬의 크기 N과 M이 주어진다. 둘째 줄부터 N개의 줄에 행렬 A의 원소 M개가 차례대로 주어진다. 이어.. 2024. 8. 15.
6. [6단계] 제목: 심화 1단계 1단계. 새싹을 출력한다.답: print("         ,r\'\"7")print("r`-_   ,\'  ,/")print(" \\. \". L_r\'")print("   `~\\/")print("      |")print("      |")' 이나 " 을 출력하고 싶으면 " \ " 을 기입해 주자.2단계. 체스는 총 16개의 피스를 사용하며, 킹 1개, 퀸 1개, 룩 2개, 비숍 2개, 나이트 2개, 폰 8개로 구성되어 있다. 검은색 피스는 모두 있었으나, 흰색 피스는 개수가 올바르지 않았다. 동혁이가 발견한 흰색 피스의 개수가 주어졌을 때, 몇 개를 더하거나 빼야 올바른 세트가 되는지 구하는 프로그램을 작성하시오.첫째 줄에 동혁이가 찾은 흰색 킹, 퀸, 룩, 비숍, 나이트, 폰의 개수가 주어진다... 2024. 8. 14.
5. [5단계] 제목: 문자열 1단계.단어 S와 정수 i가 주어졌을 때, S의 i번째 글자를 출력하는 프로그램을 작성하시오.답: s = input()i = int(input())print(s[i-1])따로 인 풋을 정하지 않으면 그냥 문자로 입력이 된다. 그리고 파이썬은 "놀랍게도" 문자열을 배열로 접근할 수 있다. (배열 인덱스)2단계. 알파벳으로만 이루어진 단어를 입력받아, 그 길이를 출력하는 프로그램을 작성하시오.답: print(len(input()))len 함수는 길이를 출력하는 함수이다.3단계. 문자열을 입력으로 주면 문자열의 첫 글자와 마지막 글자를 출력하는 프로그램을 작성하시오.입력의 첫 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 10)가 주어진다.답: x = int(input())for i in range(x):  .. 2024. 8. 13.
1~4단계 백준 복습 1단계: 입출력과 사칙연산입출력에 대한 문제, 그리고 사칙연산을 계산시키는 문제가 주요 문제였다. 이 1단계는 쉬우니깐 그냥 넘어가겠다. (한 줄 입력은 map 함수에 spilt 함수로 공백 자르기가 키 포인트)2단계: 조건문if문에 대한 문제이다. "분별점"을 파악하고 그 부분에 if문을 이용하면 된다. if문을 축약해서 코딩이 가능하나, 일단 처음에는 공간 복잡도나 시간 복잡도를 생각하지 않고 짜는 것이 중요해 보인다. 그래야 이후 축약이 가능하기 때문3단계: 반복문for문에 대한 문제이다. 기본적으로 for i in range(~~) 가 기본 문법이 되어 준다. 이때 조건식엔 항상 "끝 숫자 - 1"이라는 점을 조심해야 한다.4단계: 1차원 배열배열이란 데이터를 리스트처럼 저장하기 위한 수단이다. .. 2024. 8. 12.
4. [4단계] 제목: 1차원 배열 배열은 1차원도 있고 2차원도 있고 3차원도 있고 ~이런 식으로 N차원으로 커진다. 1차원은 그냥 "행"만 존재. 2차원은 "행" / "열"이 존재. 3차원은 "행 , 열 , 면" ~~ 이렇고 배열은 거의 3차까지만 쓰이는 듯하다.https://velog.io/@soyoun9798/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-1.-%EB%B0%B0%EC%97%B4-Array1단계. 총 N개의 정수가 주어졌을 때, 정수 v가 몇 개인지 구하는 프로그램을 작성하시오.첫째 줄에 정수의 개수 N(1 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 정수가 공백으로 구분되어 있다. 셋째 줄에는 찾으려고 하는 정수 v가 주어진다. 입력으로 주어지는 .. 2024. 8. 10.
3. [3단계] 제목: 반복문 https://easyjwork.tistory.com/10 1단계.N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.출력형식과 같게 N*1부터 N*9까지 출력한다답: n = int(input())for i in range(1,10):  # 1~9    print(n, '*', i, '=', n*i)반복문 하면 for 문이다. 파이썬에서는 for문을 range를 이용해서 단축해서 사용 가능하다. (문법이라 외워야 함) i가 1부터 10-1번 반복되는 for문이라고 생각하면 된다.2단계.두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. 첫째 줄에 테스트 케이스의 개수 T가 주어진다.각 테스트 케이스는 한 줄로 이루어져 있으며, 각 .. 2024. 8. 9.
2. [2단계] 제목: 조건문 1단계.두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오.첫째 줄에 다음 세 가지 중 하나를 출력한다.A가 B보다 큰 경우에는 '>'를 출력한다.A가 B보다 작은 경우에는 'A와 B가 같은 경우에는 '=='를 출력한다.답: a, b = map(int, input().split())if (a > b) :     print('>') elif (a     print('else :    print('==') if문을 쓰면 된다. 파이썬에서는 else if 를 elif로 줄여 쓰며 조건을 쓰고 ":"을 넣어준다. 이후 그냥 코드 작성해 주면 된다.2단계.문제시험 점수를 입력받아 90 ~ 100점은 A, 80 ~ 89점은 B, 70 ~ 79점은 C, 60 ~ 69점은 D, 나머지 점수는 F.. 2024. 8. 8.
1. [1단계] 제목: 입출력과 사칙연산 (시작하기 앞서서)백준 문제를 풀 코딩 언어로 c++ 혹은 파이썬 중에 고민을 했다. 물론 자바스크립트로 작성할지도 고민했다.속도는 c++ 이 빠르고 자바스크립트는 프론트엔드 주력 언어이지만, 어디까지나 백준 문제 풀기이고 이는 알고리즘에도 얼추 걸쳐있기에.. 그리고 문법이 쉬운 파이썬으로 일단 정했다. (어차피 코테 준비 끝나면 언어 바꾸기는 1주면 된다.)1단계. Hello World!를 출력하시오.답: print("Hello World!")출력은 print로 출력한다.2단계.두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.이때 키포인트는 "첫 번째"에 출력하는 것이다.답: a, b = map(int, input().split()) print(a+b) 입력은 input으로 .. 2024. 8. 7.
0. 백준 방향성 잡기 (시작에 앞서. 이 카테고리는 백준 문제 풀이임을 명시함)https://youtu.be/H6z1_tnyhp0?si=eN7m8LxWn0YXhGCx뭐든 시작이 중요하다.카카오 구름 스터디를 하면서 "EDU" 강의 하나와 개별적 활동 하나를 필수로 하게 되었는데, 개별적인 활동으로 [백준 문제 풀기]가 되었다. 백준 문제를 풀기 앞서서 전체적인 방향을 잡을 필요가 있어 보였다. 코딩은 속도도 중요하지만 무엇보다 방향이 중요하기 때문이다. (꾸준함이 제일 중요하다.)이에 영상을 참고, 가이드라인대로 한 번 백준을 풀어보고자 한다.1. 가이드라인문제 > "문제 단계별로 풀어보기"부터 시작해서 1단계 ~가 존재함.단계별로 풀어보기로는 1단계에서 12단계까지만 이용한다.12단계까지 도달했다면 그다음은 강의 > 온라인.. 2024. 8. 6.