1926시간제한 2초, 메모리128MB, N,M 크기가 500이하이므로 2차원 배열로도 충분히 짤 수 있음총 그림의 개수와 그림 중 넓이가 가장 넓은 것의 넓이를 출력해야 하는데 그림(1)이 이어진 부분을 다 탐색해야 함2-1. 총 그림 개수는 그림이 이어진 영역으로
2178(1,1)에서 출발하여 (N,M)의 위치로 이동해야 하는데, '1'인 부분으로만 이동하며 카운팅칸을 셀 때 시작위치와 도착위치를 포함BFS, 자료구조 큐 선택
문제 7576 풀이 과정 하루마다 익은 토마토 기준으로 동서남북 방향의 안익은 토마토를 익게 함 익은 토마토 시작점들을 넣고 BFS 처음 주어지는 익은 토마토는 여러 개일 수 있음 (시작점이 여러 개) 모두 익지 못 하는 상황일 경우가 있음 -1일 경우 익
2468물이 잠기는 부분의 반대인 물이 잠기지 않는 영역이 가장 많은 높이를 찾아야 함높이가 1이상 100이하 이므로 1~100까지 돌아도 되지? 싶지만 map 받을 때 높이 최대값 확인해서 최대값까지만 돌아도 될 듯 싶다즉, 맵 안의 최대값 높이를 찾아서 그 높이별로
5014고층 건물(F)는 하나이기 때문에 일차원 배열로 구현 가능시작위치(S), 도착위치(G)U만큼 위로 올라가는 경우의 수, D만큼 아래로 내려가는 경우의 수BFS로 풀 수 있음, 자료구조는 큐
26671일 때 bfs 시작하고 카운팅 -> 총 개수bfs 내에서 이동 시에 카운팅 -> 속하는 집의 수이렇게 카운팅 한 다음에 오름차순 qsort 돌리고 출력하면 될 듯 싶다BFS=Queue!
6593일단 이 문제는 3차원 배열까지 간다.. 동서남북 + 상하 까지 있어서이동할 수 있는 조건 '.', 시작위치(S), 도착위치(E)주의할 점은 중간에 공백이 있으며, 0 0 0 일 때 입력이 끝난다는 것BFS, 큐
15649N은 범위, M은 길이N이 주어질 때, 1부터 N까지 쭉 돌면서 visit 체크 하면 될 것 같다1부터 돌기 때문에 사전순으로 출력 됨베이스 코드는 N이 M번 선택 됐을 때 출력
9663Queen은 상하좌우대각선으로 공격할 수 있음행, 열, \\대각선, /대각선에 1개의 퀸을 놓을 수 있음좀 많이 헤맨 문제인데, 그래도 조금만 생각해보면 짤 수 있다베이스코드는 N\*N 체스판 이기 때문에 행이 N에 도달하면, 즉 N에 퀸을 놓을 수 있다면 카운
1182각 원소는 포함되거나 포함되지 않는 경우의 수를 갖고 그 합이 S와 같으면 카운팅크기가 양수인 부분 수열만 계산해야 함, S가 0일때 공집합인 부분을 제외해야 하므로 -1 해줌
18808해당 문제는 시뮬레이션 문제로 상당히 길기 때문에 텍스트로 가져오는건 패스함 링크 참고!일단 배열이 2개 필요스티커가 붙을 수 있는지 판별하는 배열(결과값)과 붙이려는 스티커 배열 이렇게 2개즉, 노트북(nxm), 그리고 스티커(rxc) 배열이 있어야 함문제는
1700먼저, 실패한 코드check를 순환하면서multi 배열이 n이 아니고(꽂을 곳이 있고), multi 배열에 checki와 같은 값이 없다면 multi 배열에 check 배열의 값을 넣음multi 배열이 꽂을 곳이 없고, multi 배열에 checki와 같은 값이
10942먼저 실패한 코드1s로 보고 M이 1,000,000 이길래 음 그냥 돌리면 되겠는데? 하고 돌렸는데 시간초과 났다뭘로 풀어야 할까.. 스택? 도 아니고 범위 지정 해야 하니까결국에 범위가 가변이고 배열은 정해져 있으니 뭔가 DP같은데... 식이 떠오르지 않는다
4179불은 각 지점에서 네 방향으로 확산된다 -> bfs가 떠오르는군.지훈이는 미로의 가장자리에 접한 공간에서 탈출할 수 있다 -> bfs 종료 조건문제에서 지훈이는 입력이 1개라고 말해줬지만...예제 입력보고 당연히 불도 1개인줄 알고 enqueue조건을 F 1개만
1697시작위치, 도착위치 정해져 있고 최단 시간을 구하는 문제이므로 bfs가 떠오른다그런데 내가 맨날 풀던 문제는 상하좌우로 퍼지거나 + 위아래 포함해서 최대 3차원배열이었는데...이건 +1, -1, \*2 로 1차원배열로 풀 수 있을 것 같다헷갈렸던 부분은 값 범위
1012배추 흰지렁이가 어떤 배추에 하나 있으면 인접한 다른 배추로 이동 가능 -> 이어져있는 영역으로 이동 가능, bfs 냄새가 난다!심지어 이동도 상하좌우 네 방향으로 간다고 하네? 확신근데 들어오는 값이 맵 전체 값이 아니고 배추 심어져있는 위치 좌표로 들어오기
10026적록색약에 따라 그림 구역을 세는 문제 -> bfs다적록색약일 때는 R,G를 같이 카운팅아닐 때는 R,G,B 따로 카운팅이것도 쉬운 문제긴 한데 코드가 늘어진다... 하나의 bfs에서 적록색약인지 아닌지 flag주고 돌아도 될 것 같은데 일단 무작정 구현했다
75697576을 풀었다면, 이건 그냥 dz부분만 추가하면 되는 문제비슷해서 풀이 과정은 딱히 없당BFS 사용, 자료구조는 큐
7562먼저 나이트의 이동 방향(좌표)을 확인하고, 입력으로 시작점과 도착지점을 주기 때문에 -> bfs로 풀자! 라고 생각이 듬딱히 어려운건 없었당BFS, 자료구조는 큐!
5427문제를 보면,불은 동서남북 방향으로 인접한 빈 공간으로 퍼져나간다. -> bfs 구나벽에는 불이 붙지 않는다. -> 좌표는 빈공간으로만 넓히면 되겠구나상근이는 동서남북 인접한 칸으로 이동할 수 있으며, 1초가 걸린다 -> 1턴에 갈 수 있는 곳은 동서남북 이구나
2206bfs 문제인데 여기서 문제는 최단거리 값에서 벽을 1번 이동할 수 있다는 조건을 포함해야 된다는 것...!처절하게 3번 틀렸는데..처음에 그냥 큐에서 플래그로 부순거 안부순거 확인하고 값 넣으면 되겠지 싶어서 위의 코드처럼 조건줬다가 개같이 틀렸다생각해보니 이
9466이 문제는 사이클에 속하지 않는 친구들을 찾는 문제1 2 3 4 5 6 7 의 학생이3 1 3 7 3 4 6 으로 찍었을 때1, 2, 5 는 사이클에 속하지 못 함 -> 출력값자기 자신으로 돌아와야 1사이클로 쳐줌자기 자신으로 돌아오지 않는다면 사이클이 아님사이
2573문제 조건주변에 0 이 있는 개수만큼 빙하가 녹음두 덩이로 나뉘면 지금까지 돌린 횟수를 출력모든 빙하가 0이 됐는데 두덩이가 안되면, 0을 출력문제 조건에 따라 맵 받고, bfs 돌린다-> map 업데이트 한다-> 맵 구역 bfs 돌린다 -> 맵 구역이 2이상이
2146n개의 섬들 중에서 두 섬의 사이에 다리를 1개만 놔야하는데, 그 중 가장 짧은 거리로 연결해야 하기 때문에 섬마다 bfs 를 돌려야 함값이 1로 통일 되서 들어오기 때문에 맵을 받고나서 영역별로 섬을 나누는 작업 필요 (이 것도 bfs 또는 dfs)진짜 신명나
13549숨바꼭질 문제 시리즈라서 풀어봤다면 풀만한데 이 문제의 킥은 순간이동 시 0초가 소요된다 라는 점인듯 싶다그렇다면 탐색을 순간이동 먼저 해야 된다는 뜻
1600문제는 나이트의 이동과 비슷한데, 결국 k만큼 말(나이트)처럼 이동할 수 있고 k가 넘어서면 일반이동만 할 수 있다는 조건이 추가 됨어렵진 않은 문제 인 듯, 조건 2개로 이동시키면 됨시작지점(0,0)->도착지점(h-1,w-1)까지주의 할 점은 return 값?
1629분할정복으로 지수계산하면 됨
11729하노이탑 테스트 링크하노이탑의 일반항은 2^n-1 -> 총 이동 횟수하노이탑 재귀 조건a는 b로 이동해야 함 (그러기 위해서는 a-1 -> c로 이동)이 후 a-1 원반들을 b로 이동
1074이거 못풀었다... chatgpt에 물어봄 결국...처음 내가 접근했던 방법은size(2^n \* 2^n)만큼 2차원 배열 만들어서 값 넣고 (r,c) 출력하면 되겠다 싶어서 배열을 만들었는데...응.. 근데 어떻게 채울껀데?? (?????) 근데 또 0.5초인
17478이 문제는 좀 쉽다, 예제 출력보면 n이 2일 때그렇다면,i는 0부터 시작하여 n까지 재귀베이스코드는 i가 n이 되면 교수 답변 출력재귀 끝나고 빠져나오면 마지막 답변 출력이 문제에서 주의해야 할 점이 있다면 "< 쌍따옴표가 있기 때문에 \\ 이거 사용해
1780이 문제는 조건이 2가지가 있는데만약 종이가 모두 같은 수로 되어 있다면 이 종이를 그대로 사용한다.(1)이 아닌 경우에는 종이를 같은 크기의 종이 9개로 자르고, 각각의 잘린 종이에 대해서 (1)의 과정을 반복한다.그렇다면 재귀 basecode는 종이가 모두
2630파란색, 하얀색의 색종이 수를 세는 문제같은 색상의 색종이가 될 때까지 똑같은 크기의 네 개의 n/2 \* n/2 4등분으로 잘라서 확인같다면 1일 때 파란색, 0일 때 하얀색 카운팅같은 색상 색종이가 아니라면 자르는 과정 반복일단 맵으로 전체 값 받고, 0,0
19922630 문제와 거의 똑같음char 형식만 생각하면 될 듯
15650중복 방지 및 오름차순이기 때문에 for문에서 현재 숫자 이후의 숫자만 탐색하도록 조건주면 될 듯(1,2) 출력 시 (2,1) 출력 Xtip
1565115650 풀이이거랑 거의 똑같은데 for문 조건만 달라짐 (같은 수를 여러 번 골라도 된다)
15652비내림차순 = 현재 숫자 이상만 탐색하도록 조건중복 선택 = 선택한 숫자 (내 자신)도 포함하도록 조건
15654아 이문제 한 번 틀렸는데, 중복허용이 아니라 불가임(ㅠㅠ)역시나 N과 M 시리즈로 풀어봤다면 쉽게 풀 수 있는 문제
15655EZ
15656
15657
15663중복값을 없애야 하는게 핵심정렬이 후 중복된 숫자가 나타나면 건너뛰는 로직 추가
문제 15664 풀이 과정 9와 거의 동일하나, 10 같은 경우에는 출력값이 나보다 커야하므로 그래서 cur 추가
15665
15666
6603전체 경우의 수를 사전순으로 출력하는 문제오름차순으로 주어지므로 띠로 qsort는 필요 없어 보임조합을 생성해야하므로 현재 idx값 이후의 숫자를 선택하도록 cur 추가
1941내가 뽑아낸 조건은 다음과 같다7명 여학생을 뽑는데, S가 4이상이여야 함 -> 종료 조건이네7명 자리는 상하좌우 인접해야 함 -> 오 그럼 bfs?모든 경우의 수를 출력하라 -> 그럼 시작점이 전구간?그래서 아래와 같은 코드로 작성했는데 개같이 틀렸다접근 방식
16987최대 몇 개의 계란을 깰 수 있는지가 출력값이므로 모든 경우의 수를 확인해야 함내구도(s), 무게(w)가 주어졌을 때왼쪽에서부터 달걀을 쥐고 끝까지 확인하는 조건 필요쥔 달걀과 아닌 달걀을 비교해야 하므로 (나) 제외 조건 추가달걀을 쥐고 내려쳤을 경우깨진 달
27866기초적인 문제로문자열을 받을 땐 &가 붙지 않는다배열은 0부터 시작한다위의 2가지만 알고 있다면 틀리지 않는 문제
11720쉬운 문제였지만 틀림원인으로는 정수 변환에서 atoi(str\[i])로 했는데, atoi(str\[i])은 str 타입이 char\* 여야 하므로 틀렸다문자열 전체를 string to int로 변경할 때 atoi(str)단일 문자를 string to int로
1152공백 문자를 어떻게 받느냐공백 기준으로 어떻게 문자열을 분리시킬거냐 가 핵심인 문제fgets(str, sizeof(str), stdin); 일 때개행문자(엔터, \\n)를 포함하기 때문에 strtok 사용 시 공백 단어 개수를 잘 못 계산하므로 마지막 개행문자를
10809입력값 받는 배열 1개a-z까지 등장했는지 체크해야 하는 배열 1개단어가 들어오지 않으면 -1이여야 하므로 -1로 초기화입력받은 배열 순회하며 num 값 구해서 대입하고 출력쉬운 문제
1157이거 시간초과 나왔는데그 이유가 for문내에서 strlen을 썼기 때문에매번 문자열의 길이를 계산하느라 문자열이 길 수록 성능에 미치므로 for문이 길어질때는 바깥에서 strlen을 사용 한 후 조건을 사용하도록 하자틀린 코드 for (int i=0; i<
11718입력받은 그대로 라는 조건이 핵심공백 포함 문자열 입력받아야 하기 때문에 fgets로 받아서 그대로 출력하면 됨
1260dfs와 bfs 각각 풀이 헤야 하므로 각각의 자료구조 사용dfs -> 재귀bfs -> 큐고려 해야할 사항방문 할 수 있는 정점이 여러 개인 경우 번호가 작은 것 부터 방문 -> 오름차순 진행 for (int i=1; i<=num; i++)만약 큰 것부터
미로탈출문제 보자마자 bfs라고 생각했고 출구까지의 조건 중 핵심 조건은 레버를 당겨야 출구로 나갈 수 있다L은 당기고 안당기고의 2가지 flag이므로 마치 백준 벽부수고이동하기 와 같은 유형 문제라고 생각함2번 개같이 틀렸는데...nx >= 0 && nx < M
무인도여행백준 그림 문제랑 비슷한 유형이라고 생각함영역구하고 해당 영역을 오름차순으로 정렬한 후 리턴어려운 문제는 아닌 듯하지만 이 문제도 2번 틀렸는데...int\* arr = malloc(MAX \* sizeof(int)); -> int\* arr = malloc(
리코쳇 로봇핵심 조건은 이동 시 미끄러져 장애물 전에 멈춘다는 것상하좌우를 1개씩이 아닌 D를 만나기 전까지 증가이 후 D일 때 멈추므로 한 번씩 빼준 뒤 방문배열 통해서 중복 체크 하는 로직 넣으면 됨나머지는 일반 bfs문제와 같다
행렬 테두리 회전하기일단.. 겁나 틀린 문제다... 범위를 똑바로 봐야 한다쿼리의 rows는 쿼리가 몇개로 구성되어 있는지를 뜻한다cols이 4개의 정수로 이루어진 x1, y1, x2, y2 임회전 순서를 한칸씩 시계방향으로 회전시키는데세로길이(행개수)가 rows, 가
문제 테이블 해시 함수 풀이 과정 어렵진 않은 문제 근데 data를 이중포인터로 주기 때문에 qsort 사용법이 좀 헷갈렸다 그 외는 문제에 나온 그대로 로직 짜면 됨 정렬 -> 합산 -> XOR -> 리턴 compare 함수 개선
거리두기 확인하기어렵진 않으나 동적할당이나 조건에서 좀 헤맨 문제대기실은 총 5개, 각 대기실 크기는 5x5응시자(P) 와 응시자 사이의 거리는 3이상이여야 함 (2이하)파티션(X) 일 때는 상관 없음 -> 벽처럼 생각헷갈렸던 조건 if (map\[nx]\[ny] ==
연속 펄스 부분 수열의 합문제부터 이해가 안감 뭔소리를 하는지 왜 값이 10인지 이해를 못해서 헤맸음차근차근 이해해보자면,2, 3, -6, 1, 3, -1, 2, 4 일 때, 주어진 수열의 부분 수열에 1, -1, 1, -1 또는 -1, 1, -1, 1 인 펄스 수열을
부대복귀주어진 roads에 따라 양방향 간선을 이어준 후 부대원들의 위치마다 bfs돌려서 리턴하려고 했으나 메모리가 터져서 개같이 실패한 문제내가 만난 오류... 전역변수가 너무 커서 박살났다하긴 n크기가 100000 이라서필요한 메모리는 100,000 x 100,00
스킬트리주어진 skill의 순서를 세팅한 후 skill_trees 를 차례대로 순회하며 확인하는 로직어렵진 않으나 약간 헷갈림
문제 숫자 카드 나누기 풀이 과정
전력망을 둘로 나누기핵심 조건은 주어진 하나의 트리 형태인 송전탑에서 하나씩 간선 제거하면서 두 개의 서브트리로 나눈 다음 dfs로 간선 차이 확인하고 두 개의 서브트리 간선 차이가 가장 적게 나는 걸 리턴하나의 간선 제거dfs로 서브 트리 크기 계산모든 경우의 수에
다단계 칫솔 판매문제가 길지만 차근차근 읽어보면 핵심 조건은 2가지로 추려짐seller가 판 돈의 90퍼는 seller가 갖고 10퍼는 referral로 준다주는 10퍼가 1미만이면 내가 갖는다 -> 0원으로 처리한다이 조건을 수행하기 위해서는 enroll과 refer
2525처음 들어오는 정수는 시(24), 분(60) 이 후 들어오는 걸 더해서 최종 시간을 도출해야 함현재 분과 추가해야 할 분 값을 더해 총 분을 계산60으로 나눈 나머지(%) 는 도출한 분, 60으로 나눈 몫(/)은 시간에 더할 값몫을 시간에 더하고 출력하면 됨 쉬
2744ctype.h 에 대소문자를 변환하는 함수를 사용하면 된다
2636이 문제의 핵심은 외부 공기가 닿는 곳에 치즈가 녹는다는 것그래서 bfs를 치즈중심이 아니라 공기 중심으로 돌려야 함바깥공기 기준으로 bfs 돌린 후 치즈 기준으로 바깥공기가 1이면(visit==1) 녹이는 과정 반복하면 됨약간 헷갈렸던 문제. 처음에 영역별로
16236아기 상어 크기 조건초기 조건은 2상어 크기보다 물고기가 작을 때 물고기를 먹음먹었다면 카운팅하고 빈칸(0)이 된다카운팅 된 수가 현재 상어 크기와 같다면 상어 크기가 1 커짐상어 크기보다 물고기가 클 때 지나갈 수 없음상어 크기와 물고기 크기가 작거나 같다면
2606연결되어 있는 모든 컴퓨터가 바이러스에 걸린다1번부터 시작한다어렵진 않은 문제고 인접 행렬을 사용해서 연결시키고 dfs로 재귀