◽ CS 기초 다지기 가장 첫 번째는 컴퓨터 기초 지식이다. CS 영역은 데이터 엔지니어가 아니더라도 SW 엔지니어라면 꼭 알아야 내용이다. 컴퓨터의 동작 원리, 기본적인 통신 방식, 소프트웨어 엔지니어의 협업 등 어떤 직무를 맡더라도 필수적으로 알아야 하는 내용들이
작년에 알고리즘을 공부했을 때 기억나는 문제였다. 그 때도 애를 먹어서 쉽지 않은 문제라고 생각하고 있었다.주어진 문자열 paragraph에서 가장 많이 나온 단어를 찾는다.이 때 banned라는 문자 배열이 주어지는데 banned에 있는 단어는 제외하고 가장 많이 나
업로드중..
https://www.acmicpc.net/problem/2588 ◽입력과 출력
단순히 예제 출력 칸에있는 고양이를 그대로 출력해주면 됩니다.출력결과 역슬래시(\\)를 쓸때 하나만 사용하게 되면 에러가 나기때문에 \\\\ 이렇게 두개를 연속해서 적어야 한다.
일반적으로 입력을 받을 때 input()함수 를 사용하지만 input()함수 는 런타임오류가 발생할 가능성이있다.input함수는 input으로 들어온 값의 끝부분의 '\\n' 개행문자를 삭제한 후 입력되지만 \*\*<span style="color:inpu
함수 사용법만 숙지하고 있다면 어려운 문제는 아니라고 생각한다.9개의 숫자가 입력 되어야 하기 때문에 list로 받아야한다.최댓값은 max()함수를 사용하면 되겠다고 생각했다.💡 배운 점index 함수는 배열에서 값의 위치 를 찾아주는 함수중복된 값이 있으면
즉 각 요소를 42로 나눴을 때 나머지가 다른 게 몇개 있는지 출력하는 문제이다 각 수를 42로 나눈 나머지가 1,2,3,4,5,6,7,8,9,10 이기 때문에 전부 나머지가 다르기 때문에 출력이 10이 나오게 된다.두 번째 예제에서는 입력된 숫자가 모두 42의 배수이
즉 입력한 점수에 연산을 해 새로운 점수의 평균을 구하는 간단한 문제이다.❗ 처음에 생각없이 위와 같이 for a in range (score): 로 작성했었다. 정수형을 사용하는 range함수에 score리스트를 넣은것이다. 리스트 연산 오류 발생 ❗문제를 잘보고
문제를 이해하는 데 조금의 어려움이 있었다. 첫 번째 입력으로는 테스트 케이스의 개수 C(총 반의 수) 를 입력해야한다.두번째 입력부터는 각 테스트케이스를 1반 ,2반 ,3반 ...이런식으로 생각하면된다.그리고 두 번째 입력에서는 첫번 째 요소는 1반의 학생의 수로
일단 먼저 셀프 넘버를 이해하는 데 시간이 걸렸다. d(n)함수는 매개변수로 입력받은 숫자를 각자리 수를 더하고 나온 값이 다음 수열으로 이어지고 또 나온 값이 다음 수열로 이어지는 무한수열이다.만약 2,4,6,8,10,11,12,13,14,15,16,17,18,
먼저 예제의 입력처럼 3자리 일 경우는 3자리이기 때문에 연속된 두 개의 수의 차이가 일정하는 한수라는 것을 알 수 있다.그러나 1자리와 2자리는 비교할 숫자들이 없어서 모두 한수로 취급한다고 한다.그래서 1자리와 2자리 즉 100이하의 수들은 모두 한수에 카운트를 올
2번째줄. 먼저 단어 S를 입력받아 저장한다.3번째줄. 소문자 아스키코드값을 range()함수를 이용해 리스트로 저장한다. 5번째줄. alphabet리스트를 x에 넣고, 입력받은 알파벳(word)에서 chr(x)문자 를 찾아 인덱스를 출력한다유니코드(Unicod
문자열 나누기(split)split 함수는 a.split()처럼 괄호 안에 아무 값도 넣어 주지 않으면 공백 (스페이스, 탭, 엔터 등)을 기준으로 문자열을 나누어 준다.
문자열을 입력받으면 문자열 중에서 가장 많이 사용된 알파벳 을 출력하는 문제이다.가장 많이 사용된 알파벳의 개수가 1개가 아닌 경우에는 물음표를 출력해야 한다. 입력받은 문자열을 세트형으로 바꿔주고 리스트로 저장한 다음에 출력해보면 위와 같이 "zZa"를 입력했는데
먼저 \*\*<span style="color:즉 문자열 → 리스트 → reverse → join으로 이어붙이기위와 같이 \*\*<span style="color:join() 으로 리스트를 합쳐 문자열 로 변환 한다.최종 풀이다른 사람이 문자열 슬
먼저 알파벳을 다이얼 번호대로 나눠줘서 alphabet리스트에 저장한다.단어를 입력받을 변수를 선언하고,걸린 시간을 저장할 변수를 0으로 초기화 한다.알파벳을 원소별로 data에 넣어주면 위와 같이 알파벳 리스트를 원소별로 data에 들어간 것을 볼 수있다.그 다음 원
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다고한다.dž는 무조건 하나의 알파벳으로 쓰이고 lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.즉 입력받는 문자열에서 크로아티아
💡 백준 1316 ◽ 문제 ◽ 입력 & 출력 ◽ 예제 입력 & 예제 출력 ◽ 풀이
A = 고정비용 , B = 가변 비용 , C = 판매 비용 이렇게 되고순이익이 고정비용을 넘어야지 이익이 발생하는 손익분기점 만약에 입력이 "1000 70 170" 이렇게 입력된다면노트북 1대를 만드는 데 고정비용 1000 , 가변비용 70 해서 1000+70\*10
문제를 보면 13까지는 3개의 방을지나고 58까지는 5개의 방을 지난다고 한다.벌집은 육각형으로 이루어져있다.즉 벌집이 6의 배수로 증가하는 것을 볼 수있다. 이웃하는 방 6개를 지날때 마다 카운트가 증가한다.1에서 시작해서 4까지 가려면 while문에서 초기 값인 4
문제의 설명에서 "1/1 → 1/2 → 2/1 → 3/1 → 2/2 → … 과 같은 지그재그 순서로 차례대로 1번, 2번, 3번, 4번, 5번, … 분수"라고 했기 때문에 배열을 살펴보면 지그재그 형태이다. 즉 대각선으로 각 줄을 나눠서 보면 1/1, 1/2, 2/1,
문제를 보면 시간제한이 0.15초이다 즉 반복문을 사용하면 안된다는 소리A = 올라갈 수 있는 거리 , B = 미끄러지는 거리 , V= 나무막대 높이올라가야할 거리 = V-B달팽이는 낮에만 올라갈 수 있기 때문에 ➡️ 하루에 갈 수 있는 거리 = A - B올라가야할
N번째로 도착한 손님에게 배정될 방번호를 계산하는 프로그램이다.첫 번째 손님은 101 호, 두 번째 손님은 201 호, 세 번째 손님은 301 ...6번째 손님은 601 7번째 손님은 102에 등과 같이 배정해야한다.만약 \*\*<span style="color:
“a층의 b호에 살려면 자신의 아래(a-1)층의 1호부터 b호까지 사람들의 수의 합만큼 사람들을 데려와 살아야 한다”라는 이상한 계약조항이있다.문제를 바탕으로 각 거주민 수를 구해보았다.1층의 2호실은 0층의 1호실 +2호실 인원1층의 3호실은 0층의 1호실 + 2호실
설탕의 무게가 주어졌을 때 봉지를 최대한 적게 가져가야하기 때문에 최대한 5kg를 가져가야한다.while문은 설탕이 0보다 크거나 같을때까지만 반복해준다6번째 줄 if문에서 5의 배수일경우 설탕의 무게를 5로 나눠준 몫을 더해준다. 이 때 몫은 "//"으로 해 정수형
소수❓ : '1보다 큰 정수 1과 자기 자신으로만 나누어지는 수로, 영어로는 Prime Number먼저 몇개의 수를 받을지 n으로 받고,숫자를 공백으로 하나의 문자열 number으로 받고 split 을 이용해서 공백 을 기준으로 나누고서 map 함수를 이용해서
백준 1978 - 소수 찾기와 비슷한 문제이다. 다른점은 소수를 구한다음에 최솟값과 합계를 구해야한다는 점이다. 4번째줄: 소수를 저장할 리스트를 빈 리스트로 초기화선언한다. 7번째줄첫 번째 for문: M이상 N이하의 범위로 설정하고, 소수를 체크할 cnt를
정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하는 문제이다.정수 n을 입력받고 1일경우 아무것도 출력하지 않는다.정수 n이 1이 아닐때만 반복문을 돈다.for문에서는 2에서 n+1까지 범위i(2부터 시작)으로 나눠질 때까지(N % m == 0) 나눈다.나눈 값
처음에 이렇게 풀었는데 모든 수를 반복문을 통해 확인을 해서 그런거같은데 시간초과가 됐다.그래서 찾아보니 "에라토스테네의 체"라는 알고리즘을 사용하면된다고 한다. 설명은 밑에!문제를 풀다가 갑자기 ValueError: not enough values to unpac
처음 그저 에라토스테네스의 체를 써서 구하면 시간초과가 안날줄 알았는데 2번이나 시간초과가 났다.범위를 줄여도 마찬가지로 매번 입력때마다 반복문에들어가 소수를 구해서인거같다..2,3번째 줄: num의 최대 약수가 sqrt(n) 이하이므로 i=sqrt(n)까지 검사하면
2보다 큰 모든 \*\*<span style="color:짝수를 두 소수의 합으로 나타내는 표현을 그 수의 골드바흐 파티션 이라고 한다.ex) 4 = 2 + 26 = 3 + 38 = 3 + 510 = 5 + 512 = 5 + 714 = 3 + 1114 = 7 +
문제를 보자마자 sorted()함수를 사용하면 된다고 생각했다.그냥 함수를 바로 사용하기 보다 반복문(버블정렬)을 이용해서 구현했다.먼저 줄에 수의 개수 N을 입력받는다.입력받은 수를 저장할 빈 리스트 li를 초기화 한다.\*\*<span style="color
BOJ-2750 문제와 비슷하게 풀었지만 역시 시간초과가 나왔다.input() 으로 몇개의 수를 받는건 상관 없지만 예제의 최대값인 1,000,000개 까지 받게 되면 시간이 오래걸리기 때문이다.sys.stdin.readline()을 사용해 입력을 받는다. sys.st
sys를 이용해 수를 입력받는다.N(1 ≤ N ≤ 10,000,000) 만큼의 입력이 주어 질 수 있기에 10000개의 배열을 선언하고,0으로 초기화한다.N개의 범위만큼 반복문을 돌려준다.똑같이 sys를 이용해 수를 입력받고, 각 숫자가 가리키는 인덱스에 1을 더해준다
점수를 받아 정렬 후 출력하면되는 문제이다.먼저 cutline()함수를 작성했다.이 함수는 sorted()함수를 이용해서 리스트를 정렬 후 상을 받는 수를 추가하여 return해준다. 정렬 된 것을 볼 수있다. 이때 k-1 == 2-1 로 1 이기 때문에 1번째 요소를
최빈값을 구하기위해서 개수를 체크할 때 Counter 라는 라이브러리를 사용하는게 편리하다.나머지는 평균,중앙값,범위(최댓값-최솟값)을 구하면 되는 문제이다. 최빈값 를 구하기 위해서는 collections 모듈의 Counter 클래스 를 사용한다.sys.std
입력 받은 수를 내림차순으로 정렬하면 되는 간단한 문제이다.먼저 각 수를 분리하기위해 str()을 이용하여 문자열로 받고 파이썬 내장함수인 map()을 이용하여 int형으로 바꿔주고 마지막으로 list()함수를 이용하여 list로 만들어주었다.❗map 함수의 반환 값은
첫 번째 숫자로 좌표의 개수를 입력받고 개수만큼 입력받은 좌표를 정렬하면 되는 sort문제다.\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:\*\*<span style="
11650 좌표 정렬하기 문제와 기준만 다르지 같은 문제이다.\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:이 때 sort()함수
길이가 짧은 것부터길이가 같으면 사전 순으로 정렬단 중복 제거\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:예제의 입력대로 문자를 입력하면 다음과 같이 출력된다. \*\*&l
입력 받은 회원의 정보(나이,이름)을 정렬한다.정렬할때 나이순으로 정렬하고, 나이가 같으면 먼저 들어온 값을 그대로 앞에 두어 정렬\*\*<span style="color:\*\*<span style="color:\*\*<span style="color
1 ≤ N ≤ 1,000,000 좌표값에 있는 좌표들 중 입력받은 일부 좌표들을 모아서 압축하여 순서대로 표현해야한다.list.index(i)의 형태는 시간복잡도 O(N) ➡️ 매번 최대 1,000,000번의 수행이 되면서 시간초과<span style="color
ㅇㄴㅁ n = int(input()) fibonacci = [0,1] for i in range(2,n+1): fibo = fibonacci[i-1]+fibonacci[i-2] fibonacci.append(fibo) print(fibonacci[
사냥감의 체력만큼의 가장 적은 수의 개미를 구성하는 문제. a: 장군 개미 , b: 병정개미, c: 일개미<span style="color:- <span style="color:>즉 공격받은 후의 체력 <span style="color:- <spa
먼저 매개변수로 받은 배열을 우선 오름차순으로 정렬해준다.그다음 편의를 위해 배열의 중간인덱스를 center_idx에 저장한다.중간인덱스를 리턴해주면 끝문제를 잘못보고 입력받은 배열이 짝수이든 홀수이든 중앙값을 구하는 코드를 짰다.계속 오류가 나길래 좀 헤매었는데 테스
파이썬에서는 문자열에서도 기본적으로 특정 문자 또는 문자열이 존재하는지나 어느 위치에 있는지와 같은 기능을 제공합니다.
\*\*<span style="color:<span style="color:> - <span style="color:<span style="color:- <span style="color:findall(pattern, string)은 문자열의
문자열 요소를 각 n번만큼 곱해서 문자열로 출력해야 한다.<span style="color:- <span style="color:append()를 이용하여 answer()에 추가한다.\*\*<span style="color:
<span style="color:- <span style="color:- \*\*<span style="color:위의 풀이와 대부분 동일하지만 not in 을 사용했다.<span style="color:- <span style="color
\*\*<span style="color:<span style="color:- <span style="color:모든 문자열이 대문자이면 True를 리턴, 그렇지 않으면 False를 리턴합니다.반대로, islower()는 모든 문자열이 소문자이면 Tru
<span style="color:- <span style="color:같지 않으면 -1을 returnfind()함수를 이용하여 위치를 찾아 리턴한다.find(찾을 문자, 찾기 시작할 위치, 찾기를 끝맺을 위치)문자열의 왼쪽부터 문자를 찾는다.찾으면 처음 찾
<span style="color:- <span style="color:<span style="color:- <span style="color:- \*\*<span style="color:
💡프로그래머스 - 옹알이 (1) ◽ 문제 ◽ 입력 & 출력 ◽ 풀이 * 1번째 줄:* 순열을 사용하기위해 **<span style="
<span style="color:- <span style="color:<span style="color:- <span style="color:\*\*<span style="color:chr()를 이용하여 아스키코드를 대입한다.나이를 str형
\*\*<span style="color:\*\*<span style="color:1번 째 TC와 2번 째 TC의 범위를 4의 배수와 문자열의 길이만큼, 2의 배수와 문자열의 길이만큼 지정해주었다.\*\*<span style="color:\*\*<
<span style="color:- <span style="color:\*\*<span style="color:보통 자료구조의 요소를 수정할 때는 인덱싱 후에 다른 값을 입력합니다. 하지만 문자열에서는 그런 방법이 통하지 않습니다.리스트로 변환하여 수
<span style="color:만약 n이 6이면 밑에 \~~while문을 들어가지 못하기 떄문에\*\*\~~ 그대로 return 된다.<span style="color:와 <span style="color:\*\*<span style="colo
\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:
\*\*<span style="color:\*\*<span style="color:map()함수를 이용하여 매개변수로 받은 array를 str으로 변환해주고 count()함수로 7의 개수를 return 한다.
<span style="color:- <span style="color:\*\*<span style="color:\*\*<span style="color:위의 코드와 동일하지만 join()을 사용하여 한 줄로 간략히 할 수 있다.
\*\*<span style="color:<span style="color:> 바깥 for문에서 2부터 안쪽for문에서 1~2 , 3에서 안쪽 for문에서 1,2,3 .... \_즉 n의 1~n+1까지 범위를 지정한다.\*\*\_ <span style=
\*\*<span style="color:
<span style="color:> TC1 ➡️ 1, 2, 3, 4, 5, 6, 7, 8로 길이가 8이고 n이 2이므로 i = 0,2,4,6 TC2 ➡️ 100, 95, 2, 4, 5, 6, 18, 33, 948 로 길이가 9이고 n이 3이므로 i = 0,3,6
\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:from collections import CounterCounter 생성자는 여러
먼저 코드 설명에 앞서 풀고나니깐 더 훨씬 간결한 코드가 생각났지만 둘다 풀이를 써볼려고 한다.\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:<span style="col
def solution(array, n): array.sort() answer = [0 for _ in range(2)] # answer 리스트 0으로 초기화 print(answer) minValue = min(array, key=lambd
\*\*<span style="color:<span style="color:- <span style="color:위의 코드와 비슷하지만 count()함수를 이용했다.\*\*<span style="color:
<span style="color:- <span style="color:- \*\*<span style="color:\*\*<span style="color:같은 풀이이지만 더욱 간결하다.공약수(common divisor)란 두 수 이상의 여러 수
\*\*<span style="color:<span style="color:>이 때 추가해주는 요소는 정렬한 tmp리스트에서 알고싶은 emergency요소를 넣어서 인덱스를 가져온다. 즉 순위를 가져온다. ex)TC1 에서 정렬된 리스트 tmp는 76,24,
\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:<span style="color:- <span style="color:- <span style="color:-
💡프로그래머스 - 잘라서 배열로 저장하기 ◽ 문제 ◽ 입력 & 출력 ◽ 풀이 * 3번째 줄 for문:* for문에서 0부터 str까지 n의 step으로 범위를 지정한다. **<span st
\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:balls ➡️ n개의 구슬 중 \*\*<span style="color:nC
\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:사용방법은 array.remove(x) 형태로 사용한다. 괄호( ) 안에 삭제하고자
\*\*<span style="color:<span style="color:- <span style="color:\*\*<span style="color:
\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:즉 1행 ➡️ 85와 초깃값 0과 비교하여 85를 저장하고2행 ➡️ 88과 기존의 max_num 85와 비교하여 큰 값인 88을
\*\*<span style="color:<span style="color:- <span style="color:>즉 시작점이기 때문에 \*\*<span style="color:\*\*<span style="color:\*\*<span
힌트를 기반으로 코드를 작성하고 팰린드롬 여부와 \*\*<span style="color:\*\*<span style="color:<span style="color:> 이 때 rstrip()을 사용한다. sys.stdin.readline()은 줄바꿈(
while문을 사용해도 되지만 for문이 편해 for문을 사용했다.\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:
\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:10진수 ➡️ 8진수 문자열10진수 ➡️ 16진수 문자열10진수 ➡️ 2진수 문자열
\*\*<span style="color:<span style="color:>단❗ +를 사용해 숫자가 아나 이상이여야한다. 즉 2개이상 붙어있으면 붙인다. TC1에서 34을 출력한다\+\*\*가 없으면 숨어있는 숫자의 덧셈(1)과 똑같이 일의 1개씩 나눠서
2부터 시작해서 2로 나누어 떨어지지 않으면 2에서 +1씩하면서 0으로 나누어 떨어지는 수를 찾으면된다.\*\*<span style="color:\*\*<span style="color:>1보다 큰 소인수를 위해 2부터 시작한다.\*\*<span sty
\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:따라서 인덱스와 원소를 각각 다른 변수에 할당하고 싶다면 인자 풀기(unpackin
\*\*<span style="color:<span style="color:- <span style="color:TC3에서 mislav가 동명이인이기 때문에 2가된 것을 볼 수 있다.<span style="color:- <span style=
\*\*<span style="color:<span style="color:>com0 ➡️ 2 ~ com1 ➡️ 5까지근데 여기서 array의 요소의 0 번째 요소는 0부터 저장되어있는데 0번째 인덱스가 1번째요소로 표현되기 때문에 -1해준다. 즉 com0
<span style="color:> \_numlist = str(num) for num in numbers\*\* 같은 의미의 코드<span style="color:>6, 10, 2에서 기본대로 정렬을 하면 1062인데 각 요소를 3자리로 맞춰서 사전
즉 x와y에서 1개만 나온 값을 붙이면 된다.\*\*<span style="color:\*\*<span style="color:<span style="color:- <span style="color:<span style="color:- <
\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:\*\*<span style="color:\*\*<span style="
\*\*<span style="color:\*\*<span style="color:\*\*<span style="color: