갑자기 재밌어 보여서 푼 문제... 컴퓨터 간 연결된 네트워크의 갯수를 구하는 문제 문제의 조건 네트워크란 컴퓨터 상호 간에 정보를 교환할 수 있도록 연결된 형태를 의미합니다. 예를 들어, 컴퓨터 A와 컴퓨터 B가 직접적으로 연결되어있고, 컴퓨터 B와 컴퓨터 C가 직접적으로 연결되어 있을 때 컴퓨터 A와 컴퓨터 C도 간접적으로 연결되어 정보를 교환할 수 있습니다. 따라서 컴퓨터 A, B, C는 모두 같은 네트워크 상에 있다고 할 수 있습니다. 컴퓨터의 개수 n, 연결에 대한 정보가 담긴 2차원 배열 computers가 매개변수로 주어질 때, 네트워크의 개수를 return 하도록 solution 함수를 작성하시오. 입력 컴퓨터의 개수 n은 1 이상 200 이하인 자연수입니다. 각 컴퓨터는 0부터 n-1인 ..
권투 선수들의 승패에 따른 순위를 매겨야 하는데 몇몇 경기 결과는 분실되었다. 경기 결과를 확실하게 알 수 있는 선수들만이라도 추려보려고 하는데 순위를 정확하게 매길 수 있는 선수가 몇 명인지 구하는 문제 문제의 조건 1. 선수의 수 n, 경기 결과를 담은 2차원 배열 results가 주어짐 2. results 배열의 각 행 [A, B]는 A 선수가 B 선수를 이겼다는 뜻이다. 3. 모든 경기 결과에는 모순이 없다. 아직 그래프에는 많이 약하기 때문에 힌트를 봤는데 플로이드-와샬 알고리즘을 이용하면 쉽게 풀린다고 해서 무엇인지 찾아보았습니다. 플로이드-와샬 알고리즘 최단 거리를 구하는 그래프 알고리즘 중 하나 모든 쌍을 표현하는 행렬(2차원 배열)을 이용해서 다이나믹 프로그래밍 방식으로 각 정점간의 최단..
캐릭터가 상대방 진영까지 가는데 걸리는 최단거리를 구하는 문제 제목 보고 그래프 문제인 줄 알고 시작했는데 알고보니 bfs 문제였다. 하지만 아직 bfs도 숙련되지 못했기 때문에 푸는데 오래 걸렸다... 문제의 조건 1. 게임 맵에서 벽과 길을 표시한 2차원 배열 maps가 주어짐 2. maps에서 0은 벽이라서 지나갈 수 없고 1은 길이라서 지나갈 수 있다. 3. 캐릭터의 초기 위치는 항상 [0,0] 이고 상대방 진영 위치는 항상 맵의 우측 하단이다. 즉 상대방 진영 위치는 n x m 크기를 가진 maps 배열 상에서 [n-1, m-1] 이다. 풀이 과정 1. bfs로 이동할 수 있는 다음 칸을 탐색하면서 다음 칸까지의 최단 거리를 계산한다. => bfs로 이동할 다음 칸을 저장할 queue 필요 qu..
신입사원 네오의 업무를 도와주기 위해 새로운 카카오 아이디를 만드려는 고객들이 규정에 맞지 않는 아이디를 입력한다면 규정에 맞는 새로운 아이디를 추천해주는 프로그램을 개발해야 하는 문제 문제의 조건 1. 고객이 입력한 아이디를 담은 string 배열 new_id가 주어짐 2. 아이디 변환 규칙 위 순서대로 차례차례 구현만 하면 된다. #include #include #include using namespace std; string solution(string new_id) { string answer = new_id; int stage = 1; //5단계부터는 new_id가 빈 문자열이 될 수도 있기 때문에 처음 4단계까지만 반복문 속에서 반복 while (4 >= stage) { for (int i =..
민우가 샀던 로또에 동생이 낙서를 하는 바람에 번호 몇 개를 알아보지 못 하게 되었는데... 민우는 로또 당첨번호 발표가 끝나고 난 후 자기가 샀던 로또가 최고 몇 등까지 당첨될 수 있는지 궁금해졌다. 저 같으면 어떻게든 번호를 복구했을 거 같은데 민우는 그냥 포기했나 봅니다. 민우가 산 로또의 최고 순위와 최저 순위를 알아보는 문제 문제의 조건 1. 민우의 로또 번호를 담은 배열 lottos, 당첨 번호를 담은 배열 win_nums가 주어진다. 2. 동생이 낙서해서 알아보지 못 하는 번호는 0으로 표시되어 있다. 3. 0들이 만약 로또 당첨 번호와 일치하면 민우가 얻을 수 있었던 최고 순위이고 일치하지 않으면 민우가 얻을 수 있었던 최저 순위이다. 4. [최고 순위, 최저 순위] 순서로 배열에 담아서 ..
하드디스크의 작업 처리 시간의 평균을 구하는 문제 문제의 조건 1. 작업 처리 시작 시간과 소요 시간이 담긴 2차원 배열 jobs가 주어짐 2. 하드디스크는 기본적으로 먼저 들어온 순서대로 처리를 하는데 만약 현재 처리중인 작업이 끝나지 않았는데 새로운 처리 요청이 2개 이상 들어오면 그 중 작업 소요 시간이 짧은 순서대로 처리한다. => 우선순위 큐에 현재 작업시간보다 짧거나 같은 작업들을 저장하는데 작업의 소요시간이 짧은 순서로 정렬해서 저장해야 함 (여기서 함수 사용법을 몰라서 아주 많이 헤멤...) 3. 모든 작업이 끝나서 쉬는 상태라면 남은 작업들 중 가장 먼저 들어온 것부터 처리한다. 2, 3번 과정을 반복해서 총 작업 소요 시간을 구한 뒤 작업의 갯수로 나눠서 평균 구하면 되는데 총 작업 소..
카카오 프렌즈들이 단체사진을 찍으려 하는데 각자 원하는 조건이 있다. 프렌즈들이 원하는 조건에 맞춰 단체사진을 찍을 수 있는 경우의 수를 구하는 문제 문제의 조건 1. 프렌즈들이 원하는 조건의 갯수 n, n만큼 조건을 담은 string 배열 data가 주어진다. 2. data의 각 원소는 "N~F=0" 과 같이 주어지는데 N(네오)는 F(프로도)와 0칸 떨어져 있고 싶다는 뜻이다. 즉 바로 옆에 붙어있고 싶다는 뜻이므로 둘 사이의 거리는 1이어야 한다는 뜻이 된다. (겹쳐있진 않고 일렬로 서 있으니까) 그렇다면 실제로 계산에 사용해야 할 프렌즈 사이의 거리는 주어지는 수에서 +1 한 값이라는 말이 된다. "N~F>1" 이라면 1칸을 초과해서 떨어져 있고 싶다는 뜻이고 "N~F
오픈채팅방에서 사람들의 출입 로그를 출력하는 문제 문제의 조건 1. 한 오픈채팅방의 출입 로그가 담긴 string 배열 record가 주어지는데 각 원소는 위와 같은 규칙으로 정해져서 담겨있다. 2. 만약 한 사람이 닉네임을 바꾸면 그 전에 출력되었던 메시지들의 닉네임도 모두 바뀐다. 그 사람이 나갔다가 다시 들어오면서 아이디를 바꿔서 들어와도 그 전에 출력되었던 닉네임도 모두 바뀐다. => record 배열을 처음부터 순회하면서 해시 맵에 유저아이디와 닉네임을 저장한다. key: 유저아이디 value: 닉네임 이렇게 저장하고 출입 로그의 첫 단어가 Enter 이거나 Change이면 key 유저아이디로 찾은 value값을 바꿔주면 된다. record 배열이 끝날 때엔 가장 마지막으로 사용한 닉네임으로 갱..
- Total
- Today
- Yesterday
- 프로그래머스
- 컴퓨터
- 다이나믹프로그래밍
- 너비우선탐색
- BFS
- C언어기초
- 해커랭크
- 그리디
- 스위프트플레이그라운드
- 아이패드
- DFS
- 깊이우선탐색
- 프로그래밍
- c++
- 캐나다생활
- 애플
- dp
- 기초
- 백준
- 컴퓨터공부
- 코딩공부
- 알고리즘
- greedy
- 컴퓨터사이언스
- c언어
- 캐나다
- 영어공부
- hackerrank
- 문제풀이
- 하드웨어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |