본문 바로가기

분류 전체보기182

[백준 15650- N과 M(2)][파이썬]-16일차 https://www.acmicpc.net/problem/15650 https://blue-coding-story.tistory.com/99 N과 M(1) 문제 풀이에서 문제의 로직에 대해서는 다 설명되어 있다. 여기서는 오름차순이라는 조건만 추가된거고, If 문에 data==sorted(data)를 추가해서 오름차순으로 정렬된 쌍만 출력하게 만들었다 2022. 6. 10.
[백준 15649- N과 M(1)][파이썬]-16일차 https://www.acmicpc.net/problem/15649 Key point: dfs 로직으로 접근하는 것 1. dfs 로직을 풀어서 보면 n=4 m=2 1. def dfs() 호출 2. if문에 걸리지않음 len(data)=0이라 3. for문 호출 i=1 부터 1은 data에 없으니까 추가해주고 dfs()를 또 호출 4. 두번째 dfs()호출 5. if문에 걸리지 x len(data)=1 이라 6. for문 호출 i=1 은 data에 있으니까 i=2 -> data에 추가 dfs()를 또 호출 7. if 문에 걸리니까 1,2 print한거 물고, pop으로 data를 다시 []로 만들어줌 이 로직을 계속 처리 2022. 6. 10.
[CS 기초지식 C기초]-15~16일차 1. C언어의 기본 #include int main(void) { printf("hello world\n"); } 코드로 입력하는 source code, 0과 1로 이루어진 machine code, 그 사이에서 comiler가 작동하여 우리가 친 코드를 컴퓨터가 알아들을 수 있는 이진법 코드로 변환해준다. 1. clang hello.c -> “clang” 이라는 컴파일러로 “hello.c”라는 코드를 컴파일해라 2. 그럼 a.out 이라는 파일이 생성됨(0과 1로 형성된) 3. 이 코드를 ./a.out 으로 실행! 2. string #include #include int main(void) { string answer=get_string("What's your name?\n"); printf("I'm %.. 2022. 6. 10.
[DFS 알고리즘][파이썬]-16일차 1. DFS 알고리즘의 정의 Depth-First Search, 깊이 우선 탐색. 탐색 하는 기준은 깊이가 우선이 된다 DFS를 공부할 때 자주 보게 되는 그림인데, 숫자가 써져있는 동그라미 자체를 'node' 라고 한다. 이 알고리즘을 이해하려면, 스택,큐, 재귀함수의 개념들에 대해서는 미리 공부를 해두어야 한다. 2. DFS 알고리즘의 로직 이 알고리즘은 무조건 깊게 들어간다. 계속 깊게 들어가고 갈 곳이 없으면 한 칸 위로 올라와서 더 깊게 갈 길이 있나? 하고 찾고, 있으면 그 길을 또 쭉 깊게 간다. 만약 없다면, 또 한 칸을 위로 올라가서 같은 로직을 반복한다. 이 코드를 말로 표현해보자. 1. 28번에서 dfs 코드를 실행 2. visited[1]=True 가 된다 3. print(1) en.. 2022. 6. 10.
[백준 2108번- 통계학][파이썬]-16일차 https://www.acmicpc.net/problem/2108 KEY POINT: 최빈값 Counter -> 각각 요소 하나하나별로 몇번씩 나왔는지 count 해주고, 자동으로 크기 순으로 정렬된다 두 번째로 작은 수를 출력하라고 했으니까, 앞 2개만 비교해서, 로직을 진행해주면 된다 단순해보이지만 여러 디테일한 부분을 요한 문제다. 생각보다 까다롭거나 시간이 많이 걸릴 수도 있겠다 Counter를 안 쓰거나 sys를 안쓰면 시간초과납니다 2022. 6. 10.
[헷갈리는 문법 정리][while :/ round][파이썬] -15일차 알고리즘 문제를 풀면서 개념이 2%씩 부족하다는 느낌이 들었고, 다른 사람들의 코드를 보고 참조할 때도 어려움이 있다.\ 1. while while 뒤에는 조건이 오고 : 가 오게 되는데, while list: 아니면 while len(list): 이렇게 오는 경우가 있었다. while 뒤에 condition 이 오면, True로 간주하고, 무한루프가 돌게 된다 그래서, while 문 밑에 break를 걸어주게 되는데, while len(list): 는 while 문 내부에서 list의 원소를 지우거나 해서 len(list)>=1과 같은 의미다. 그래서 while True: 로 접근하고 내부에서 if len(list)==0: break 와 같이 끊어줄 수 있었다 while list: 도 마찬가지고 lis.. 2022. 6. 9.
[프로그래머스- 소수 찾기][파이썬]-15일차 https://programmers.co.kr/learn/courses/30/lessons/42839 --시간 초과 코드 -- 정답 코드 key point: permutations, 소수 로직에서 제곱근으로 시간 초과 해결하기 1. permutations 로 모든 경우의 수 구하기 모든 경우의 수를 구하고 ''.join( )으로 깔끔하게 구하고, sum(data,[]) 로 2차원 -> 1차원으로 바꾸고, 각 요소들에 int로 바꿔줌 map을 이용해서! 2. 소수 로직 원래는 부르트포스로 2부터 target 숫자 -1 까지 탐색하는 로직을 사용했는데, 시간 초과가 났다 ex) 9 1 x 9 =9 3 x 3=9 9 x 1=9 9의 소수 => 1,3,9 9의 제곱근=3 만약 3까지 돌았는데도 나눠지지 않는다 .. 2022. 6. 9.
[프로그래머스- 기능개발풀이][파이썬]-15일차 https://programmers.co.kr/learn/courses/30/lessons/42586 --오류 코드(정답에서 정답률이 50%가 나옴) -- 정답 코드 여러개의 for문을 돌리지 않고, 스택/큐 유형임을 이용해서 계속 pop을 해주면서 len을 줄여가고, len이 0보다 클 경우에만 계속 반복하게 하여, 다 pop 되면 자동으로 끝내는 로직 선택! time이라는 변수를 설정해서 time에 따라 증가하게 설정하고, 100보다 크다면 pop하고 cnt를 올린다 -> 그럼 저절로 앞선 인덱스가 100이 아니라 출시되지 못한 인덱스들도 저절로 계산된다 2022. 6. 9.
[프로그래머스- 프린터][파이썬]-14일차 https://programmers.co.kr/learn/courses/30/lessons/42587 --풀이 key point: deque, enumerate, while 로직 유형: 스택/ 큐 유형 1. deque 리스트의 앞 뒤의 요소들을 다루는 문제이기 때문에, deque로 접근! 2. enumerarte index와 원소에 동시에 접근할 수 있는 방법 for x in enumerate(['1','2','3']): print(x) -> (0,'1') (1.'2') (2,'3') 이 문제에서는 0, 1 ,2 처럼 생성되는 인덱스 순서를 location에 매칭하는데 사용, 원소 번호를 max값과 비교하는게 사용 3. while 로직 좌측의 아이템부터 뽑아서 if 가장 큰게 아니라면: 다시 뒤로 보내고.. 2022. 6. 8.
[CS 기초지식 2진수/비트]-14일차 1. 2진수 0,1로만 이루어진 컴퓨터 2진법의 접근 자리 수 하나하나로 나누어서 111 의 경우 4*1+2*1+1*1=7, 10진법의 7을 의미한다 10진법에서의 5를 2진수로 바꿔본다면, 101 4*1+2*0+1*1=5 2. 비트 2진법에서의 하나의 자릿수. -> 바이트 (8개의 비트가 모여 만들어짐) 하나의 바이트 -> 8개의 비트, 하나의 비트 -> 0 OR 1 바이트: 256개의 서로 다른 비트 2022. 6. 8.
[1주일 복습][파이썬]-14일차 복습 1. 딕셔너리 사용/ from collections import defaultdict https://blue-coding-story.tistory.com/52 defaultdic은 ()안에 지정해둔 '디폴트' 값으로 value를 지정하지 않은 키 값의 밸류를 채워주는 것이다 본래의 dictionary에서는 value 값 없이 key를 호출하면 오류가 뜨는데, defaultdict은 굳이 필요 없는 값까지 for문으로 처리를 해주어야 하는 번거로움이 있어서, 이를 해결해줄 수 있다! 필요한 값들만 딕셔너리에서 골라 쓰고 싶을 때 사용해보자 -> https://dongdongfather.tistory.com/69 참조 2. set 형태 https://blue-coding-story.tistory.com/56.. 2022. 6. 8.
[프로그래머스- 124나라의 숫자][파이썬] -13일차 https://programmers.co.kr/learn/courses/30/lessons/12899 [1,2,4] 리스트를 만들어두고 리스트를 뺑뺑이 돌려야지! 라는 접근을 했지만, 2자리가 넘어가는 로직을 처리하지 못해서 실패해버렸다 key point: while문으로 접근(n을 계속 빼면서), 자리수가 커지는 로직 처리 1. key point 먼저, while의 기준을 1이상으로 두고, 즉 1보다 작아지면 while문을 종료하게 설정한다. n에 1을 빼고, %3으로 한 값을 인덱스로 두고 계속 뺑뻉이를 돌리는 식이다 ex) n=3 -> (n-1) %3 = 2 -> nation-124[2]= 4 여기서 포인트는 2자리가 넘어가는, 즉 3진법으로 생각하면 0을 처리하는 방식이었다. 위의 로직대로라면 n.. 2022. 6. 7.