일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 쪽지기능
- DFS
- 백준 2667
- Python
- BFS
- 앱개발
- 파이썬
- static final
- 코딩테스트
- 노드개발자
- 코딩
- springboot
- 1260
- 알고리즘
- 이메일인증
- Java
- Gmail인증
- 백준
- 프로그래머스
- nodejs
- 코테
- 노드프로젝트
- 자바
- 깊이우선탐색
- 브실이의입시전략
- SWEA
- 노드개발
- email인증
- 너비우선탐색
- 실버5
- Today
- Total
목록분류 전체보기 (15)
데옹의 블로그
생각하는 것 자체는 어렵지 않았을 것입니다. 그냥 입력된 과목들 빼내고 그 중에서 높은 값 몇 개, 작은 값 몇 개 더해주면 끝나는 문제죠. 전 인터넷에 잘 나오지도 않는 문제를 블로그에 적는 것을 좋아합니다. 관종이라서요.. 암튼.. 갑니다. 제 전략은 이렇습니다. hashmap을 사용하고, 여기서 key에 String을 넣었습니다. K개 만큼 값을 받아 일치하는 key-value 자체를 삭제하고 남은 값들을 values로만 뽑아서 정렬 후 리스트에 넣었습니다. (왜냐면 String 즉 key값들은 딱히 필요가 없다고 생각해서요) 이후에 그냥 큰 값들 M - K개, 작은 값도 그만큼씩 더하고 끝냈습니다! 아래 코드는 이 설명을 구현한 것입니다. import java.io.BufferedReader; i..
문제를 제대로 읽지 않으면 경로 탐색이라고 생각이 되는 문제입니다. 하지만 그냥 별 거 없는 문제였죠? 간단한 구현 문제였던 것 같습니다만.. (알고리즘 잘 모름) 생각해야 할 것들은 아래와 같습니다. 이건 한 칸씩 가는 문제가 아닌, 경로에 문제가 있다면 애초에 가지를 말아야 합니다. N,S를 잘 보고 풀어야 합니다. N은 북쪽, S는 남쪽이라 헷갈릴 수 있지만 N은 y축 숫자를 줄여야하고, S는 y축 숫자를 늘려야 합니다. 반환 값이 [세로 좌표, 가로 좌표] 입니다. 위에 것들만 신경쓰면 진짜 쉬운 문제였습니다. 쓰잘데 없는 설명은 치우고 그냥 코드에 주석 달겠습니다. 귀찮아도 하나씩 읽어보면 이 사람이 왜 이렇게 풀었나 알 수 있을 것이라 생각됩니다! 피드백 마구마구 하세요. def solutio..
정말 가고 싶던 회사에 서류 합격했는데, 코딩테스트 언어가 Java로 제한되어 있었습니다.. 여태껏 파이썬으로만 연습을 해왔고 테스트까지 2일만 남아있던 상황에 프로그래머스 기준으로 lv0은 풀지만 lv1부턴 풀 수가 없더라고요 ㅠㅠ 문제는 이 회사 말고도 이렇게 포기한 회사가 몇개 더 있다는 것입니다. 그래서 오늘부턴 java를 열심히 공부해보기 위해서 하루에 3문제는 자바로 2문제는 파이썬으로 하고자 다짐을 적었습니다.. SpringBoot로 취업 준비하시는 분들은 java로 연습하는 것이 좋겠습니다.. 특히 공고에 Java라는 것이 써있다면 더더욱(안 써있는 곳 거의 없음ㅋ) 가보자고요
필요 없는 것들 다 지우고 남은 숫자들 중 가장 많이 나온 순서대로 튜플을 이룰 것이라 생각했습니다. 이유는 그냥 문제 예시 보다 보면 알 수 있는데, 1개 짜리엔 a1만 들어갈 수 있고, 2개 짜리엔 a1,a2가 들어갈 수 있기 때문입니다. 아래 코드는 걍 한 줄로 끝낼 수 있을 것 같아 작성했습니다.. Counter로 element의 수를 다 계산하고 most_common()으로 정렬한 다음에 key값들만 뽑아온 겁니다. (리스트 컴프리헨션) from collections import Counter def solution(s): return [i[0] for i in Counter(list(map(int,s.replace('{{','').replace('},{',',').replace('}}','')..
첨에 문제 제대로 안 읽고 풀다가 '이렇게 쉬운 문제라고..?' 해서 다시 푼 문제입니당. 다시 풀어도 좀 쉽긴 했어요. 조건을 몇 개 생각해보니 바로 풀릴 것 같아 작성했습니다. 조건은.. 문자열이 들어왔을 때, 펠린드롬이 2개 이상이면 1개만 사용 가능하다는 것 즉, 이 말은 문제 안에 팰린드롬 문자열이 하나라도 있는지만 보면 된다는 것입니다. 펠린드롬이 아닌 것들을 모아놨을 때, 그 중에 반대로 뒤집었을 때 맞는 것이 없으면 걍 빼도 된다는 것 예를 들어 'abb', 'cbs', 'dsa', 'bba' 가 있으면 'abb', 'bba'만 남겨도 됩니다. 펠린드롬을 모아놓은 리스트를 A, 아닌 것을 모아놓은 리스트를 B라고 할 때, 어차피 A는 많아도 하나만 사용이 가능할 것이고.. B는 `조건2`를..
뭐든 확실하게 짚고 넘어가는 것이 좋다고... 그래서 오늘은 final과 static에 대해서 그냥 알아보고 가는 글을 쓰고 가려고 합니다. 왜 궁금했냐면, java 공부하는데 값을 변하게 하지 않기 위해선 static을 쓴다는데 밑엔 또 final이 똑같은 의미로 쓰여져 있더라고요. 그래서 궁금했어요^^ final 변수에 적용되면 변수의 값을 한 번 할당하면 변경할 수 없습니다. 즉 변수를 상수로 만드는데 여기서 상수는 수학에서의 상수가 아닌 [항상 상]을 써서 변하지 않는 수라고 합니다. 메소드에 적용되면 메소드가 하위 클래스에서 오버라이딩 될 수 없습니다. 즉, 메소드에서의 구현이 모든 하위 클래스에서 변경될 수 없습니다. 클래스에 적용되면 클래스가 하위 클래스로 확장될 수 없습니다. 즉, 다른 클..
동시성 문제란..? 동시성 문제는 동일한 자원에 대하여 여러 스레드가 동시에 접근하면서 발생하는 문제입니다. 코드로 살펴보고 싶지만 일단은 글로 예시를 적어보겠습니다. [원래 계획] (저는 빈츠를 좋아하는데요.) 동아리방에 접시가 놓여져있고 데옹은 방에 들어와서 빈츠를 접시에 두고 냉장고에 갔다 와서 빈츠를 먹을 계획을 합니다. 줄리도 같은 방에 들어와서 몽쉘을 접시에 두고 냉장고에 갔다 와서 몽쉘을 먹으려 합니다. 그렇다면 데옹은 빈츠를 먹고 줄리는 몽쉘을 먹는게 정상적인 진행이겠죠. 근데 과자를 놓을 수 있는 접시는 하나! 라면 어찌될까요.. [실제 진행] 1. 데옹이 방에 들어와 접시에 자신이 먹을 "빈츠"를 두고 잠깐 냉장고에 갔다. 2. 줄리가 방에 들어와 접시에 있는 빈츠를 "몽쉘"로 바꾸고 ..
이 문제는 보자마자 걍 DFS로 풀어야겠다는 생각을 했습니다. 바로 풀어봅시다. 처음에 한 생각은 들어가서 집을 철거해버리고 철거한 만큼의 수를 세어 리스트에 저장하면 되겠다 싶었습니다. 철거해버리면 다음에 그 곳을 셀 필요가 없어지니까요 ㅋㅋ ^_^ 위 사진이 정말 적절하다고 생각해서 첨부해봤어요... 철거 해버리면 다시 dfs로 탐색할 때 탐색 못 하니까요. 분명 있었는데... 사라졌으니까 갯수를 셀 수가 없죠... (visited를 사용하지 않아도 되는 이유가 됩니다) 암튼 이 단순한 생각을 그냥 코드로 끄적여봤습니다. from collections import deque import sys input = sys.stdin.readline n = int(input()) def dfs(x,y): gl..
아시겠지만, 간단하게 1번 노드와 연결된 노드의 갯수만 세면 되는 문제입니다. 구구절절 잡다한 설명은 치우고 바로 시작합시다. 우선 생각해야 할 것들이 뭐가 있을까요? 바로 1번과 직접적으로든 간접적으로든 연결이 되어있지 않다면 그건 확인할 필요가 없다는 걸 생각해야죠! 그리고, 1번과 관계가 있는 노드는 모두 카운트 해야합니다. 근데 또 생각해보면 쉽더라고요. 왜냐면 그냥 1번부터 시작했으니까 visited 된 (방문 처리 된) 것들을 세보면 되지 않을까요? 생각은 다 했으니까.. 어떻게 구현을 해볼까 생각을 해봐야죠. 근데 dfs를 할 때, graph라는 list를 만들어서 했었습니다. 그래서 연관된 것들을 계속 찾아갔죠. 그러니까 dfs가 완성이 되었고요.. 그러면 저희는 그냥 graph[1]번을 ..
DFS와 BFS를 공부 중인데, 이론적으로 이해하는 건 되지만 계속 헷갈려서 코드만 정리하면서 써보려구요. 갑니다.. 더 친절한 설명을 원하면 다른 블로그를 참고해주세요! from collections import deque from sys import stdin input = stdin.readline # 입력을 받는 곳입니다. n,m,v = map(int, input().split()) # 1. 그래프 초기화 ## 인덱스를 1부터 시작하기 위해서 n+1 을 해줍니다. ## 일반적으로 그래프의 노드 번호는 1부터 시작하는 경우가 많습니다. ## n은 실제 노드의 개수이고, 노드의 번호는 1부터 n까지이니 리스트의 크기를 n+1로 설정하여 ## 인덱스 1부터 n까지 사용할 수 있도록 초기화를 한 것입니다..