Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- 폰 잃어버렸을때
- 정보처리기사 실기
- 싸피 모집설명회 다시보기
- 싸피 모집설명회
- 삼성 싸피 지원
- 폰 찾기
- LG 서비스센터 영업시간
- 정처기 후기
- gram 액정 교체
- 싸피 추천코드
- 싸피 11기
- 폰 위치추적
- 그램 액정 교체비용
- SSAFY
- 싸피 혜택
- 폰 도난
- 정처기 인강 추천
- 코딩테스트
- 학생메일
- 인디노래 추천
- 코드트리
- 봄 노래
- #코드트리 #코딩테스트 #코딩테스트실력진단
- 정처기 실기
- 갤럭시 위치추적
- 싸피 추천인
- 싸피 지원자격
- 정보처리기사 준비물
- 코딩테스트실력진단
- 삼성 싸피
Archives
- Today
- Total
포포's 코딩&일상 기록
[코드트리챌린지] 7회차 본문
실력진단
오답
n= int(input()) # 격자 줄수
arr =[list(map(int,input().split())) for _ in range(n)]
arr2= arr
minMa=n*n
di = [-1,0,1,0]
dj = [0,1,0,-1]
#마을크기 구하는 함수
def cntMa(i,j):
count =0
bu = arr2[i][j] #부족의 숫자
qu= [(i,j)]
while qu: # 큐에 뭐가 있는동안
ddi,ddj = qu.pop() # 기준좌표
#기준 좌표의 상하좌우 탐색 했을때 부족값과 같은지
for i in range(4):
dki,dkj = di[i], dj[i]
if (0 <= ddi+dki < n) and (0 <= ddj+dkj < n) : #범위체크
if bu == arr2[ddi+dki][ddj+dkj]:
count +=1
qu.append((ddi+dki,ddj+dkj))
arr2[ddi+dki][ddj+dkj] ='v' # 방문표시
return count
#격자탐색
for i in range(n):
for j in range(n):
if arr2[i][j] != 'v':#방문하지 않았다면
#탐색시작
cntma= cntMa(i,j)
#최솟값 변경
if minMa > cntma:
minMa= cntma
print(minMa)
다른문제
오답 코드
n= int(input()) #자릿수
arr= [4 for _ in range(n)]
# 재귀 함수
def f(idx): # 0~(idx-1) 인덱스 까지는 결정을 했고
# idx ~ (n-1) 인덱스 까지 결정하는 함수 # 현재상태
# 종료조건
if idx == n : #0~(n-1) 까지 결정했따면
#if sum(arr) <= ((n*3)-(1*3)-(2*3)) and sum(arr) >= ((2*3)+(1*(n-3))):
print(*arr,sep="")
return
# 재귀함수 작성
#idx 인덱스에 넣을 값 결정
for i in range(1,4):
arr[idx] = i
#다음값 넣기
f(idx+1)
arr[idx]=4
#재귀호출
f(0)
"""#2의 개수를 세는 함수
def cnt2(arr):
#1의 개수를 세는 함수
def cnt1(arr):"""
정답코드 - 내 풀이에서는 함수 정의 위치가 중요했다..
n= int(input()) #자릿수
arr= [4 for _ in range(n)]
#2의 개수를 세는 함수
def cnt2(arr):
c2 =0
for elem in arr:
if elem ==2:
c2 +=1
return c2
#1의 개수를 세는 함수
def cnt1(arr):
c1 =0
for elem in arr:
if elem ==1:
c1 +=1
return c1
# 재귀 함수
def f(idx): # 0~(idx-1) 인덱스 까지는 결정을 했고
# idx ~ (n-1) 인덱스 까지 결정하는 함수 # 현재상태
# 종료조건
if idx == n : #0~(n-1) 까지 결정했따면
#if sum(arr) <= ((n*3)-(1*3)-(2*3)) and sum(arr) >= ((2*3)+(1*(n-3))):
if cnt2(arr) >= 3 and cnt1(arr) >=3:
print(*arr,sep="")
return
# 재귀함수 작성
#idx 인덱스에 넣을 값 결정
for i in range(1,4):
arr[idx] = i
#다음값 넣기
f(idx+1)
arr[idx]=4
#재귀호출
f(0)
공부한내용1
이거 좀어려웠따...
내풀이
n= int(input()) # 숫자 개수
arr= list(map(int,input().split()))#숫자 입력받기
ma = max(arr) #-
checkDu = [0 for _ in range(ma+1)] # range(n+1) 아님..
#중복값 체크 하는 코드
for i in arr:
checkDu[i] +=1
maxDu = -1
# 맨뒤에있는 1 값 찾기
for i in range(ma,0,-1):
if checkDu[i] == 1:
maxDu=i
break;
print(maxDu)
모범답안1
# 변수 선언 및 입력:
n = int(input())
nums = list(map(int, input().split()))
# 최댓값 찾기
max_num = -1
for curr_num in nums:
# 최대가 될 수 있는 후보입니다.
if max_num < curr_num:
# 갱신할 수 있는지 확인하기 위해 이 숫자의 등장 빈도를 셉니다.
count = 0
for elem in nums:
if elem == curr_num:
count += 1
# 이 숫자가 배열에서 유일할때만 갱신합니다.
if count == 1:
max_num = curr_num
print(max_num)
모범답안2
-> 내코드랑 비슷... 근데나랑다른점은 .. 최댓값을 안구하고 그냥 문제에서 주어진 값1000으로 초기화한 거..
MAX_NUM = 1000
# 변수 선언 및 입력:
n = int(input())
nums = list(map(int, input().split()))
# count 배열을 0으로 초기화
# 편의상 배열의 index가 실제 숫자를 나타내도록 하기 위해
# MAX_NUM + 1개의 공간을 갖는 배열로 선언합니다.
count = [0 for _ in range(MAX_NUM + 1)]
# step1. count 배열에 수의 등장 빈도를 셉니다.
for elem in nums:
count[elem] += 1
# step2. 큰 수부터 체크하며 한 번 등장한 최대의 값을 찾습니다.
answer = -1
for max_candidate in range(MAX_NUM, -1, -1):
if count[max_candidate] == 1:
answer = max_candidate
break
print(answer)
공부한 내용2- 틀림..
내가 작성한 코드
n=int(input()) # 년수
arr= list(map(int,input().split()))#자동차가격
ma = arr[0]
mi=arr[0]
for i in range(n):
if arr[i] < mi: #사는 지점
mi= arr[i]
ma= arr[i]
if arr[i] > ma: # 파는 지점
ma= arr[i]
print(ma-mi)
"""
첫 번째 예제: 가격이 2일 때 사고 6일 때 팔았을 때의 이익은 4입니다. 자동차를 사기 전에는 팔 수 없기 때문에 10 - 2 = 8은 답이 될 수 없음에 유의합니다.
두 번째 예제: 언제 사고 팔아도 이익이 나지 않기 때문에 0을 출력해줍니다.
-> 함수쓰면안되고 순회해야함..
mi = min(arr)
ma = max(arr)
print(ma-mi)
"""
공부한내용 3
n= int(input()) #개수
arr= list(map(int,input().split())) #정수 개수
chaList=[]
for i in range(1,len(arr)):
chaList.append(arr[i]-arr[i-1])
print(min(chaList))
공부한내용 4
n=int(input())
arr= [input() for _ in range(n)]
cntlen=0
cnta=0
for elem in arr:
#길이 더하기
cntlen += len(elem)
#a개수 찾아서 더하기
"""for alph in elem: #첫번쨰 문자로 'a' 가 몇번 나왔는지 확인해야함
if alph =='a':
cnta +=1 """
if elem[0] =='a':
cnta +=1
print(cntlen,cnta)
#코드트리 #코딩테스트 #코딩테스트실력진단