전체 글 474

[삼성SW역량][Python/BOJ] 백준 16236 마법사 상어와 파이어볼(구현)

처음 문제를 풀때 for문으로만 주구장창 풀었다. 코드는 더러워지고 길어졌다. 게다가 답도 제대로 나오지않았다. 처음부터 mp에 넣고 결과를 구했기 때문이다. fireball이라는 리스트를 만들어 이용하면 더 간편하고 깔끔하게 풀이할 수 있다. 문제에는 아래와 같은 문구가 있다. 1번 행과열이 n번 행과열과 붙어있다는 의미이므로 nr과 nc를 구해도 다시 안으로 돌아도록 %n을 해주면된다. nr = (cr+(cs*dx[cd])) % n nc = (cc+(cs*dy[cd])) % n dx와 dy는 문제의 0,1,2,....7 방향대로 맞추어서 설정해준다. 문제 풀이 : 1. fireball 리스트에 입력받는다. 2. k번 반복한다. 2-1. fireball들을 리스트에서 꺼내서 이동시킨후 mp에 넣는다. ..

[삼성SW역량][Python/BOJ] 백준 16236 아기상어(BFS,구현)

주의해야할 점은 list를 pop()하면 뒤의 원소(마지막원소)부터 반환된다는 것이다. 그래서 먹을 수 있는 물고기의 리스트를 역순으로 정렬해야한다. 이렇게 ! return sorted(tmp, key = lambda x : (-x[2],-x[0],-x[1])) 또는 reverse = True를 뒤에 달아줘도 된다. return sorted(tmp, key = lambda x : (x[2],x[0],x[1]), reverse = True) 또는 pop(0)로 바꾸면 된다. 아래 코드는 pop(0)로 만들었다. BFS는 항상 최단거리만을 나타낸다는 점을 이용한다. 1. 아기상어의 위치를 구한다. 2. biteFish라는 함수를 수행한다.(인수로는 상어의 위치와 상어의 길이를 준다.) 2-1. 인수로 들어온..

[삼성SW역량][Python/BOJ] 백준 16235 나무재테크(구현)

삼성...그저 구현...! 한 자리에 나무가 여러개가 있을 수 있으므로 각각의 값을 리스트로 설정해주어야한다. tree = [[[] for _ in range(n)] for i in range(n)] 이런 식으로 코드를 만들어 주어야한다. dx = [-1,-1,-1,0,0,1,1,1] dy = [-1,0,1,-1,1,-1,0,1] if __name__=="__main__" : n,m,k = map(int,input().split()) # 매년 겨울 추가되는 영양분 plus_nutri = [list(map(int,input().split())) for i in range(n)] # 영양분 ground = [[5]*n for i in range(n)] # 트리의 나이 tree = [[[] for _ in r..

[삼성SW역량][Python/BOJ] 백준 17779 게리맨더링2(구현)

처음 문제를 봤을 때 조건이 너무 많아서 어질했다. 어떤 방법을 써야할지 모르겠어서 답을 봤더니 정말 그 많은 조건들을 다 구현하면 되는 문제였다. 두려워하지말고 하나하나 구현해야겠다는 생각을 했다. 1. 4중 for문을 돌면서 조건에 맞는 x, y, d1, d2를 선택하여 cal 함수를 돌린다. 2. cal 함수 2-1. 경계면을 5번으로 할당 2-2. 경계면 내부를 5번으로 할당 2-3. 전체 구역을 돌면서 1,2,3,4,5의 인구를 구한다. 2-4. 각 인구의 최대값, 최소값을 구해 뺀 수를 반환한다. 경계면 내부를 5로 만들 때 행을 x+1 부터 x+d1+d2까지 돌린다는 것을 잊지말아야한다. 경계면 가장 위의 행이 x이고 가장 아래 행은 x+d1+d2이기 때문이다. 경계면 내부를 5로 만들기 위..

[2]스프링 빈과 의존관계 _ 컴포넌트 스캔, 자바코드로 직접 등록

스프링은 스프링 컨테이너에 스프링빈을 등록하여 사용한다. 기본적으로는 싱글톤 (하나의 클래스에 하나의 객체만을 등록한후 공유)으로 등록한다. 즉, 같은 스프링 빈이면 모두 같은 인스턴스인 것이다. 이 스프링빈을 등록하는 방법에는 2가지가 있다. 1. 컴포넌트 스캔 2. 자바 코드로 직접 스프링 빈 등록 정형화된 코드의 경우 컴포넌트 스캔방식을 주로 사용한다. 정형화 되어있지 않거나, 상황에 따라 구현 클래스를 변경해야 하면 직접 스프링 빈으로 등록한다. 1. 컴포넌트 스캔 @Component 애노테이션이 있다면 스프링 빈으로 스프링 컨테이너에 객체로 자동 등록된다. @Component를 포함하는 @Controller, @Service, @Repository도 스프링 빈으로 자동 등록이된다. @Autowi..

순열을 구해보자. (중복 순열과 그냥 순열)

중복(허용) 순열 : def dfs(L) : if L == m : for i in range(m) : print(mp[i],end = "") print() else : for i in range(1,n+1) : mp[L] = i dfs(L+1) if __name__=="__main__" : n,m = map(int,input().split()) check = [0]*(n+1) mp = [0]*m dfs(0) 3 2을 입력할 시 이렇게 출력된다. 중복을 허용하여 1~3까지의 수 중 2자리수가 나오는 것이다. 순열 : def dfs(L) : if L == m : for i in range(m) : print(mp[i],end = "") print() else : for i in range(1,n+1) : i..

[삼성SW역량][Python/BOJ] 백준 17142 연구소3(BFS)

벽의 개수와 바이러스의 공간을 list로 저장한다. combinations를 이용해 활성화시킬 m개의 바이러스를 선택한다. bfs를 이용해 모든 빈곳을 감염시키는 시간을 반환하도록 한다. 0. time 변수 생성 1. vis 배열을 만든다. 2. 바이러스를 deque에 넣고 바이러스의 위치는 vis의 값을 0으로 설정한다. 3. 바이러스가 퍼진다. 3-1. 퍼지는 곳이 빈곳이라면 퍼지고, time 을 갱신 3-2. 퍼지는 곳이 비활성화된 바이러스라면 활성화시킨다. 4. 미리 구해놓은 벽의 개수화 현재 벽의 개수를 비교한다. 5. 만약 다르면 모든 빈곳을 채우지 못한것이므로 무한대를 반환, 아니라면 time 을 반환 코드 : from collections import deque f..

[삼성SW역량][Python/BOJ] 백준 17140 이차원 배열과 연산(구현)

🐾 20220927 이 문제는 정말 구현만 하면 된다. 근데 이런 생각을 대체 어떻게 하지.... 이차원 배열에서 전치된 배열을 구하고 싶다면 (*mp)를 하면 된다. 다만 배열 형태로 나오는 것이 아니기에 zip(*mp)를 해주면 된다. 해당 숫자와 개수를 구하기 위해서는 set을 이용해서 중복을 제거한다는 것이 신기했다. 그리고 0 이 아니라면 해당 숫자와 개수를 넣는다. for i in set(row) : if i : tmp.append([i, row.count(i)]) def sor(A,clen) : for idx , row in enumerate(A) : tmp = [] for i in set(row) : if i : # 0은 무시 tmp.append([i,row.count(i)]) tmp.so..

[삼성SW역량][Python/BOJ] 백준 20055 컨베이어 벨트 위의 로봇(구현)

언제든지 로봇이 내리는 위치에 도달하면 그 즉시 내린다 이 부분을 코드에 넣지않아서 계속 틀렸었다. 변화가 있을 때마다 언제든지 , 즉 [n-1]자리에 로봇이 있다면 0으로 변경해준다. 코드 : from collections import deque if __name__=="__main__" : n,k = map(int,input().split()) durability = deque(map(int,input().split())) robot = deque([0]*(n*2)) ans = 0 while True : ans +=1 # 한 칸 회전 durability.rotate() robot.rotate() if robot[n-1] :# 내리는 자리에 로봇이 있다면 내림 robot[n-1] = 0 #로봇 이동 f..

[intellij]인텔리제이 파일 형식 인식 오류 대처방법

파일을 만들다가 확장자를 안넣고 무심코 만들었을 때 html과 같은 파일을 인식하지 못하는 경우가 있습니다. 이럴때는 ctrl + alt + s를 눌러 preference에 들어가 Editor -> FileTypes에서 파일들을 둘러보면서 어디에 내 잘못입력된 파일명이 있는지 찾아보면 됩니다. 저는 file type auto-detected by~~에 있었고 memberList와 memberList.html을 삭제해주었더니 이처럼 잘 인식되는 것을 확인할 수 있습니다. https://ahn3330.tistory.com/63 [IntelliJ] 파일 형식에 맞지 않게 인식할 때 문제 webstorm에서 local_login.js 파일을 추가해야 됐는데, local_login 파일을 추가해서 위와 같은 팝업..